Découper une chaîne SQL Server avec séparateur vers plusieurs lignes en XML




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. 

Découper une chaîne de caractère avec séparateurs d’une colonne unique vers plusieurs lignes avec 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:

 

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()

SET @ChaineXML = cast(('<ville>'+replace(@Chaine,@Separateur ,'</ville><ville>')+'</ville>') as xml)


-- 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('ville') Resultat(c)

 

Le résultat est le suivant :

Découper une chaine de caractère avec séparateurs dynamiquement avec les fonctions XML SQL Server.

 

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;

 




Soyez le premier à commenter

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.


*