Découper un Texte après un Caractère en T-SQL

Exemple de requête écrite en T-SQL pour découper un texte après un caractère particulier.

Il est courant de découper du texte en T-SQL, souvent le découpage doit se faire après un caractère donné, appelé séparateur ou délimiteur dans les grands champs textes. Comme par exemple un nom de fichier fichier.txt pour séparer le nom du fichier de son extension. En effet, il est évident que découper une chaîne juste avant le caractère, ici un point, doit se faire de manière dynamique, c’est à dire quelle que soit la position du caractère.

1. Découper une chaîne après un caractère avec 3 fonctions T-SQL standard

Tout d’abord, pour découper une chaîne de texte avec MS SQL juste après un certain caractère, utiliser les fonctions textes suivantes:

  • SUBSTRING() pour découper un texte en indiquant le début et la longueur à découper.
  • CHARINDEX() retourne la position d’un texte à rechercher. La fonction utilise le texte à rechercher, le texte dans lequel rechercher et la position de départ de la recherche.
  • LEN() est une fonction qui retourne la longueur d’un texte donné.

2. Requête T-SQL pour couper le texte en utilisant 3 variables

D’ailleurs, cet exemple n’est pas récursif. Cependant, pour le rendre récursif, il suffit d’intégrer la logique dans une boucle. Ajuster ensuite la variable qui contient le caractère dans la chaîne principale. Voici donc cette fois un exemple de code T-SQL récursif pour découper une chaîne de texte avec délimiteurs (comme des points, des demi-colonnes ou des virgules) à l’aide d’un script T-SQL.

-- Déclaration des variables utilisées comme chaine de départ, chaine de résultat et le caractère utilisé
declare @ChaineDepart nvarchar(100)
declare @Resultat nvarchar(100)
declare @Caractere nvarchar(10)

-- Définition de la chaîne de caractère
set @ChaineDepart = 'DEBUT_DE_CHAINE.FIN_DE_CHAINE'

-- Définition du caractère ou de la chaîne de caractère à chercher pour couper la chaîne en deux
set @Caractere = '.'
set @Resultat = substring(@ChaineDepart,CHARINDEX(@Caractere, @ChaineDepart)+1,len(@ChaineDepart))

select @ChaineDepart as 'Chaine de Départ'
select @Resultat as 'Chaine de Résultat'
Requête T-SQL  pour Découper un Texte après un Caractère depuis SSMS
Requête T-SQL pour Découper un Texte après un Caractère depuis SSMS

Dans la capture d’écran ci-dessus avec la requête, la dernière partie du texte est isolée par la fonction substring et affichée comme résultat.

Découper une chaîne SQL sans la fonction SPLIT_STRING

Pour conclure sur cette requête écrite en T-SQL qui permet de découper un texte après un caractère donné, il est préférable de migrer vers les versions les plus récentes de SQL Server pour bénéficier de la function intégrée : SPLIT_STRING.

Voici un autre tutoriel SQL sur la gestion de texte, apprenez à gérer des chaînes de plus de 8000 caractères avec des variables T-SQL et spécifiquement à l’intérieur des procédures stockées.

Soyez le premier à commenter

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.


*