Découper une chaîne de caractères de colonne vers des lignes en SQL





08-24-2016, 01:23 PM (Ce message a été modifié le : 05-18-2017 09:54 AM par EO-Manager.)
Message : #1

Software_128x128 Découper une chaîne de caractères de colonne vers des lignes en SQL


Comment découper une chaîne de caractères avec séparateurs vers des lignes en SQL? Pour découper une chaîne de caractère composées d'éléments séparés par des virgules, des points-virgules, des tabulations, ou encore des points par exemple, la manière la plus efficace et la plus propre est d'utiliser les fonctions XML intégrées au langage SQL Server.

Nous utilisons donc du T-SQL pour découper la chaîne de caractère sous SQL Server en une seule requête. Par exemple pour découper cette chaîne de caractères facilement:
"Paris.Lyon.Marseille.Nice.Toulouse.Bordeaux.Lille.Grenoble.Nantes", nous utilisons le code suivant:

-- Déclaration des variables
DECLARE @Chaine nvarchar(max),
@Separateur char(1),
@ChaineXML xml

-- Assignation des variables et du séparateur, ici avec un point
SELECT @Chaine = 'Paris.Lyon.Marseille.Nice.Toulouse.Bordeaux.Lille.Grenoble.Nantes',
@Separateur = '.'

-- Construction de la châine XML avec la fonction CONVERT()
SELECT @ChaineXML = CONVERT(xml,' ' +
REPLACE(@Chaine,@Separateur,'
') +
'
')

-- Sélection du résultat en parcourant la chaîne XML contenue dans la variable @ChaineXML
SELECT [Value] = Resultat.c.value('.','varchar(50)')
FROM @ChaineXML.nodes('/root/niveau') Resultat©

Si la chaîne de caractère est contenue dans une colonne d'une table SQL Server, il suffit alors d'initialiser la chaîne de caractère à partir d'une requête SQL, comme cela :

SELECT 	@Chaine = Colonne 
FROM MATABLE;
Trouver tous les messages de cet utilisateur
Citer ce message dans une réponse


Articles ou discussions similaires
Pivoter des lignes en colonnes avec la requête PIVOT sous SQL Server
Convertir du XML en chaîne de caractères NVARCHAR en SQL