Dans ce billet de blog, nous allons apprendre la fonction STRING_SPLIT qui a été introduite plus tôt dans SQL Server 2016 mais qui n’a pas encore été largement adoptée dans l’industrie. Nous allons apprendre aujourd’hui comment diviser une chaîne de valeurs séparées par des virgules dans une colonne en utilisant STRING_SPLIT.
Par exemple, si vous avez le jeu de résultats suivant et si vous voulez chacune des valeurs de la chaîne séparée par des virgules de la dernière colonne dans une ligne séparée, auparavant vous deviez utiliser une fonction très compliquée sur la colonne qui était un tueur de performance.
Maintenant, nous pouvons simplement utiliser la fonction STRING_SPLIT et y parvenir très rapidement. Comprenons avec un exemple simple.
D’abord, créons un échantillon de données.
CREATE TABLE StudentClasses(ID INT, Student VARCHAR(100), Classes VARCHAR(100))GOINSERT INTO StudentClassesSELECT 1, 'Mark', 'Maths,Science,English'UNION ALLSELECT 2, 'John', 'Science,English'UNION ALLSELECT 3, 'Robert', 'Maths,English'GOSELECT *FROM StudentClassesGO
Puis, écrivons un code qui va diviser la commande séparer la chaîne de valeur dans une colonne.
SELECT ID, Student, value FROM StudentClasses CROSS APPLY STRING_SPLIT(Classes, ',')GO
C’est tout. Nous avons terminé. C’est une tâche très simple avec l’aide de la nouvelle fonction. Vous pouvez encore nettoyer votre échantillon de données en exécutant la commande suivante.
DROP TABLE StudentClassesGO
Rappellez-vous , si jamais vous recevez l’erreur suivante :
Msg 208, Level 16, State 1, Line 7
Invalid object name ‘STRING_SPLIT’.
Je vous suggère de lire cet article de blog pour la solution de l’erreur ci-dessus. Cette fonction ne fonctionnera que si vous avez le niveau de compatibilité à 2016 ou plus récent.