Découper un texte en plusieurs lignes avec une requête

Comment découper un texte avec des séparateurs vers plusieurs lignes en SQL? Voici comment découper un texte composé d’éléments séparés par des virgules, des points-virgules, des tabulations, ou encore des points.

Une manière la efficace et simple est d’utiliser les fonctions XML intégrées au langage SQL Server et le type de données XML.

 

Avec SQL Server comment découper un texte avec des séparateurs en plusieurs lignes ?

Ce code T-SQL permet de découper la chaîne de caractères sous SQL Server avec une seule requête.

Par exemple pour découper cette chaîne de caractères qui contient  une liste de villes Françaises facilement:

“Paris.Lyon.Marseille.Nice.Toulouse.Bordeaux.Lille.Grenoble.Nantes”

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

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.

La requête permet de découper facilement un texte en plusieurs lignes, en utilisant le séparateur

D’autre part, si une colonne dans table SQL Server contient la chaîne de caractère, alors modifier la requête. Initialiser alors la chaîne de caractère à partir d’une requête SQL Select, comme cela :

SELECT 	@Chaine = Colonne
FROM  	MATABLE;

Soyez le premier à commenter

Laisser un commentaire