Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak podzielić ciąg w SQL Server

Problem:

Chcesz podzielić ciąg w SQL Server.

Przykład 1:

Masz zdanie i chcesz je podzielić przez spację.

Rozwiązanie 1:

SELECT value
FROM STRING_SPLIT('An example sentence.', ' ');

Wynik wygląda tak:

wartość
An
przykład
zdanie.

Dyskusja:

Funkcja STRING_SPLIT(ciąg, separator) w SQL Server dzieli ciąg w pierwszym argumencie przez separator w drugim argumencie. Aby podzielić zdanie na słowa, określ zdanie jako pierwszy argument funkcji STRING_SPLIT() funkcja i ' ' jako drugi argument.

STRING_SPLIT() wyniki w kolumnie o nazwie value. Aby uzyskać każdą część ciągu w osobnym wierszu, wybierz wartość z STRING_SPLIT(string, separator) . Na przykład

SELECT value
FROM STRING_SPLIT('An example sentence.', ' ');

Oczywiście możesz podzielić ciąg znaków za pomocą innego separatora, np. przecinka. Możesz również zmienić nazwę kolumny, tak jak każdej innej kolumny.

Przykład 2:

W texts tabeli, jest kilka zdań.

zdanie
To jest pierwsze zdanie.
A oto druga.

Chcesz podzielić zdania znakiem spacji.

Rozwiązanie 2:

SELECT value
FROM texts
CROSS APPLY STRING_SPLIT(sentence, ' ');

Wynik wygląda tak:

wartość
To
jest
pierwszy
zdanie.
I
oto
inne
jeden.

Dyskusja:

Podobnie jak w poprzednim przykładzie, funkcja STRING_SPLIT(tekst, separator) dzieli ciąg podany jako pierwszy argument przez separator. Tym razem masz kilka zdań do załatwienia; te zdania są przechowywane w texts stół. Dlatego musisz użyć CROSS APPLY; dokładniej,

texts CROSS APPLY STRING_SPLIT(sentence, ' ')

Użyj go w FROM klauzula. Oznacza to, że prawa strona (STRING_SPLIT(sentence, ' ') ) jest stosowany do każdego wiersza tabeli po lewej stronie (texts ). Dlatego prawa strona może używać kolumn z tabeli po lewej stronie (tutaj kolumna zdań z texts tabeli.) Oto zapytanie, które otrzymasz.

SELECT value
FROM texts
CROSS APPLY STRING_SPLIT(sentence, ' ');

Przykład 3:

W texts tabela, są dwie kolumny:id i sentence .

id zdanie
1 To jest pierwsze zdanie.
2 A oto druga.

Chcesz podzielić zdania znakiem spacji, a także pokazać identyfikatory zdań.

Rozwiązanie 3:

SELECT
  id,
  value
FROM texts
CROSS APPLY STRING_SPLIT(sentence, ' ');

Wynik wygląda tak:

id wartość
1 To
1 jest
1
1 pierwszy
1 zdanie.
2 I
2 oto
2
2 inne
2 jeden.

Dyskusja:

Ten przykład jest bardzo podobny, ale chcesz również zobaczyć id kolumna. Aby zobaczyć tę kolumnę, po prostu dodaj ją do SELECT listę i pamiętaj, aby wstawić przecinek. Zobaczysz identyfikator zdania wraz z częściami zdań w wyniku. Na przykład pierwsze zdanie jest podzielone na 5 części i ma identyfikator 1 . Dlatego identyfikatorem wszystkich 5 części w tabeli wyników będzie 1 . Następne zdanie o identyfikatorze 2 , jest również podzielony na 5 części, a każda z tych części będzie pokazana z id = 2 .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Importuj/eksportuj bazę danych za pomocą SQL Server Server Management Studio

  2. Różnica między liczbami, liczbami zmiennoprzecinkowymi i dziesiętnymi w SQL Server

  3. Jak określić numer portu w parametrach połączenia programu SQL Server?

  4. Jak utworzyć procedurę składowaną, która opcjonalnie będzie przeszukiwać kolumny?

  5. Zapytanie rekurencyjne w SQL Server