La fonction T-SQL STRING_SPLIT pour découper un texte avec séparateur en différentes lignes est disponible à partir des versions SQL Server 2016 et supérieures.
Pour découper un texte délimité depuis une seule de caracrtères en plusieurs lignes distinctes avec SQL Server, j’ai utilisé des fonctions T-SQL pendant des années avant la sortie de la version SQL Server 2016. En effet, à partir de SQL Server 2016, une nouvelle fonction intégrée permet cette fonctionnalité. Il s’agit de la fonction STRING_SPLIT T-SQL.
1. Séparer des valeurs depuis un texte délimité par des virgules avec SQL Server
Pour ce premier exemple, un cas d’utilisation courant pour STRING_SPLIT est de diviser une chaîne de valeurs séparées par des virgules (CSV) en lignes individuelles.
/* T-SQL Script by Expert-Only.com - https://expert-only.com/ */ -- Exemple sans renommer la colonne de résultat SELECT value FROM STRING_SPLIT('Apple,Orange,Banana,Grapes,Mango', ','); -- Utiliser le second exemple pour renommer la colonne SELECT value as Fruit FROM STRING_SPLIT('Apple,Orange,Banana,Grapes,Mango', ',');
2. Analyser du texte avec un séparateur point-virgule en lignes avec SQL Server
Une autre application pratique est de diviser une chaîne d’emails séparés par des points-virgules en lignes individuelles.
/* T-SQL Script by Expert-Only.com - https://expert-only.com/ */ SELECT value as [Email] FROM STRING_SPLIT('example1@email.com;example2@email.com;example3@email.com', ';')
Cela retournera une table où chaque ligne contient une seule adresse email de la chaîne originale.
3. Diviser du texte à partir d’une variable en multiples lignes
Pour ce troisième exemple, nous utilisons cette fois des villes. L’objectif est d’obtenir le même résultat mais en utilisant des variables pour stocker la chaîne et le séparateur. Le code est plus flexible et pourrait gérer des données provenant d’une table par exemple.
/* T-SQL Script by Expert-Only.com - https://expert-only.com/ */ -- Déclaration des variables DECLARE @String nvarchar(max), @Separator char(1); -- Initialisation de la chaîne et du séparateur SET @String = 'New York;Los Angeles;Chicago;Houston;Phoenix;Philadelphia;San Antonio;San Diego;Dallas;San Jose'; SET @Separator = ';'; -- Utiliser STRING_SPLIT ici au lieu de la solution XML SELECT @String = STRING_SPLIT ( @String , @Separator );
À propos de la fonction STRING_SPLIT T-SQL
La fonction STRING_SPLIT dans SQL Server est un outil puissant pour la manipulation de texte, permettant de découper efficacement un texte délimité en Lignes avec SQL Server Que ce soit pour gérer des données CSV ou analyser des chaînes complexes, STRING_SPLIT offre une solution simple pour convertir du texte délimité en lignes séparées. Sa simplicité et son efficacité en font une fonctionnalité essentielle pour les développeurs et les administrateurs de bases de données confrontés à des tâches de traitement de texte et de transformation de données.
Diviser une chaîne avec des délimiteurs en plusieurs colonnes
Pour aller plus loin, que faire si vous devez stocker chaque valeur dans une colonne séparée? Par exemple pour préparer l’importation de fichiers csv avec un en-tête ? Voici un autre tutoriel avec un exemple de comment sélectionner chaque valeur de la variable @String dans une colonne dédiée séparée. Voici donc un tutoriel complet sur comment Diviser du texte délimité vers plusieurs colonnes dans SQL Server.
Soyez le premier à commenter