Problema:
Vuoi dividere una stringa in SQL Server.
Esempio 1:
Hai una frase e vorresti dividerla per il carattere spazio.
Soluzione 1:
SELECT value FROM STRING_SPLIT('An example sentence.', ' ');
Il risultato è simile al seguente:
valore |
---|
An |
esempio |
frase. |
Discussione:
La funzione STRING_SPLIT(string, separator) in SQL Server divide la stringa nel primo argomento per il separatore nel secondo argomento. Per dividere una frase in parole, specifica la frase come primo argomento di STRING_SPLIT()
funzione e ' ' come secondo argomento.
STRING_SPLIT()
risulta in una colonna denominata valore. Per ottenere ciascuna parte della stringa in una riga separata, seleziona il valore da STRING_SPLIT(string, separator)
. Ad esempio,
SELECT value FROM STRING_SPLIT('An example sentence.', ' ');
Ovviamente puoi dividere una stringa usando qualche altro separatore, ad esempio la virgola. Puoi anche rinominare la colonna come qualsiasi altra colonna.
Esempio 2:
Nei texts
tabella, ci sono alcune frasi.
frase |
---|
Questa è la prima frase. |
Ed ecco l'altro. |
Vuoi dividere le frasi per il carattere spazio.
Soluzione 2:
SELECT value FROM texts CROSS APPLY STRING_SPLIT(sentence, ' ');
Il risultato è simile al seguente:
valore |
---|
Questo |
è |
il |
prima |
frase. |
E |
ecco |
il |
altro |
uno. |
Discussione:
Proprio come nell'esempio precedente, la funzione STRING_SPLIT(text, separator) divide la stringa data come primo argomento dal separatore. Questa volta, hai alcune frasi di cui occuparti; queste frasi sono memorizzate nei texts
tavolo. Questo è il motivo per cui è necessario utilizzare CROSS APPLY; più precisamente,
texts CROSS APPLY STRING_SPLIT(sentence, ' ')
Usalo nel FROM
clausola. Significa che il lato destro (STRING_SPLIT(sentence, ' ')
) viene applicato a ciascuna riga della tabella di sinistra (texts
). Questo è il motivo per cui il lato destro può utilizzare le colonne della tabella di sinistra (qui, la colonna delle frasi dai texts
tabella.) Ecco la query che ottieni.
SELECT value FROM texts CROSS APPLY STRING_SPLIT(sentence, ' ');
Esempio 3:
Nei texts
tabella, ci sono due colonne:id
e sentence
.
id | frase |
---|---|
1 | Questa è la prima frase. |
2 | Ed ecco l'altro. |
Vuoi dividere le frasi per il carattere spazio e mostrare anche gli ID delle frasi.
Soluzione 3:
SELECT id, value FROM texts CROSS APPLY STRING_SPLIT(sentence, ' ');
Il risultato è simile al seguente:
id | valore |
---|---|
1 | Questo |
1 | è |
1 | il |
1 | prima |
1 | frase. |
2 | E |
2 | ecco |
2 | il |
2 | altro |
2 | uno. |
Discussione:
Questo esempio è molto simile, ma vuoi anche vedere l'id
colonna. Per vedere questa colonna, aggiungila a SELECT
list e ricordati di includere la virgola. Vedrai l'ID della frase insieme alle parti delle frasi nel risultato. Ad esempio, la prima frase è divisa in 5 parti e ha l'ID 1
. Quindi, l'ID di tutte e 5 le parti nella tabella dei risultati sarà 1
. La frase successiva, con l'ID 2
, è anche diviso in 5 parti e ciascuna di queste parti verrà mostrata con id = 2
.