Problème :
Vous souhaitez fractionner une chaîne dans SQL Server.
Exemple 1 :
Vous avez une phrase et vous aimeriez la diviser par le caractère espace.
Solution 1 :
SELECT value FROM STRING_SPLIT('An example sentence.', ' ');
Le résultat ressemble à ceci :
valeur |
---|
Un |
exemple |
phrase. |
Discussion :
La fonction STRING_SPLIT(string, separator) dans SQL Server divise la chaîne du premier argument par le séparateur du deuxième argument. Pour diviser une phrase en mots, spécifiez la phrase comme premier argument du STRING_SPLIT()
fonction et ' ' comme second argument.
STRING_SPLIT()
résultats dans une colonne nommée valeur. Pour obtenir chaque partie de la chaîne dans une ligne distincte, sélectionnez la valeur dans STRING_SPLIT(string, separator)
. Par exemple,
SELECT value FROM STRING_SPLIT('An example sentence.', ' ');
Bien sûr, vous pouvez diviser une chaîne en utilisant un autre séparateur, par exemple la virgule. Vous pouvez également renommer la colonne comme n'importe quelle autre colonne.
Exemple 2 :
Dans les texts
table, il y a quelques phrases.
phrase |
---|
Ceci est la première phrase. |
Et voici l'autre. |
Vous voulez diviser les phrases par le caractère espace.
Solution 2 :
SELECT value FROM texts CROSS APPLY STRING_SPLIT(sentence, ' ');
Le résultat ressemble à ceci :
valeur |
---|
Ceci |
est |
le |
premier |
phrase. |
Et |
voici |
le |
autre |
un. |
Discussion :
Tout comme dans l'exemple précédent, la fonction STRING_SPLIT(text, separator) divise la chaîne donnée en premier argument par le séparateur. Cette fois, vous avez quelques phrases à régler; ces phrases sont stockées dans les texts
table. C'est pourquoi vous devez utiliser CROSS APPLY; plus précisément,
texts CROSS APPLY STRING_SPLIT(sentence, ' ')
Utilisez-le dans le FROM
clause. Cela signifie que le côté droit (STRING_SPLIT(sentence, ' ')
) est appliqué à chaque ligne du tableau de gauche (texts
). C'est pourquoi le côté droit peut utiliser les colonnes du tableau de gauche (ici, la colonne phrase des texts
table.) Voici la requête que vous obtenez.
SELECT value FROM texts CROSS APPLY STRING_SPLIT(sentence, ' ');
Exemple 3 :
Dans les texts
table, il y a deux colonnes :id
et sentence
.
identifiant | phrase |
---|---|
1 | Ceci est la première phrase. |
2 | Et voici l'autre. |
Vous souhaitez diviser les phrases par le caractère espace et également afficher les ID des phrases.
Solution 3 :
SELECT id, value FROM texts CROSS APPLY STRING_SPLIT(sentence, ' ');
Le résultat ressemble à ceci :
identifiant | valeur |
---|---|
1 | Ceci |
1 | est |
1 | le |
1 | premier |
1 | phrase. |
2 | Et |
2 | voici |
2 | le |
2 | autre |
2 | un. |
Discussion :
Cet exemple est très similaire, mais vous voulez également voir le id
colonne. Pour voir cette colonne, ajoutez-la simplement au SELECT
liste et n'oubliez pas d'inclure la virgule. Vous verrez l'ID de la phrase ainsi que les parties des phrases dans le résultat. Par exemple, la première phrase est divisée en 5 parties et a l'ID 1
. Par conséquent, l'ID pour les 5 parties dans le tableau de résultats sera 1
. La phrase suivante, avec l'ID 2
, est également divisé en 5 parties, et chacune de ces parties sera affichée avec id = 2
.