Problém:
Chcete rozdělit řetězec na SQL Server.
Příklad 1:
Máte větu a chtěli byste ji rozdělit mezerou.
Řešení 1:
SELECT value
FROM STRING_SPLIT('An example sentence.', ' ');
Výsledek vypadá takto:
| value |
|---|
| An |
| příklad |
| věta. |
Diskuse:
Funkce STRING_SPLIT(řetězec, oddělovač) v SQL Server rozdělí řetězec v prvním argumentu oddělovačem v druhém argumentu. Chcete-li rozdělit větu na slova, zadejte větu jako první argument funkce STRING_SPLIT() funkce a ' ' jako druhý argument.
STRING_SPLIT() výsledkem je sloupec s názvem hodnota. Chcete-li získat každou část řetězce v samostatném řádku, vyberte hodnotu z STRING_SPLIT(string, separator) . Například,
SELECT value
FROM STRING_SPLIT('An example sentence.', ' ');
Řetězec samozřejmě můžete rozdělit pomocí jiného oddělovače, např. čárky. Sloupec můžete také přejmenovat stejně jako jakýkoli jiný sloupec.
Příklad 2:
V texts tabulky, jsou tam nějaké věty.
| věta |
|---|
| Toto je první věta. |
| A tady je ten druhý. |
Chcete rozdělit věty podle mezery.
Řešení 2:
SELECT value FROM texts CROSS APPLY STRING_SPLIT(sentence, ' ');
Výsledek vypadá takto:
| value |
|---|
| Toto |
| je |
| the |
| první |
| věta. |
| A |
| tady |
| the |
| jiné |
| jedna. |
Diskuse:
Stejně jako v předchozím příkladu rozděluje funkce STRING_SPLIT(text, oddělovač) řetězec zadaný jako první argument oddělovačem. Tentokrát se musíte postarat o pár vět; tyto věty jsou uloženy v texts stůl. To je důvod, proč musíte použít CROSS APPLY; konkrétněji
texts CROSS APPLY STRING_SPLIT(sentence, ' ')
Použijte jej v FROM doložka. Znamená to, že pravá strana (STRING_SPLIT(sentence, ' ') ) se použije na každý řádek tabulky na levé straně (texts ). Pravá strana proto může používat sloupce z levé tabulky (zde sloupec vět z texts tabulka.) Zde je dotaz, který dostanete.
SELECT value FROM texts CROSS APPLY STRING_SPLIT(sentence, ' ');
Příklad 3:
V texts tabulka má dva sloupce:id a sentence .
| id | věta |
|---|---|
| 1 | Toto je první věta. |
| 2 | A tady je ten druhý. |
Chcete rozdělit věty podle mezery a také zobrazit ID vět.
Řešení 3:
SELECT id, value FROM texts CROSS APPLY STRING_SPLIT(sentence, ' ');
Výsledek vypadá takto:
| id | hodnota |
|---|---|
| 1 | Toto |
| 1 | je |
| 1 | |
| 1 | první |
| 1 | věta. |
| 2 | A |
| 2 | tady |
| 2 | |
| 2 | jiné |
| 2 | jeden. |
Diskuse:
Tento příklad je velmi podobný, ale chcete také vidět id sloupec. Chcete-li zobrazit tento sloupec, přidejte jej do SELECT seznam a nezapomeňte uvést čárku. Ve výsledku uvidíte ID věty spolu s částmi vět. Například první věta je rozdělena na 5 částí a má ID 1 . Proto bude ID všech 5 dílů ve výsledné tabulce 1 . Další věta s ID 2 , je také rozdělena na 5 částí a každá z těchto částí bude zobrazena s id = 2 .