Comment découper un texte après un caractère particulier avec du code T-SQL ?
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.
Comment découper une chaîne de texte après un caractère spécifique avec une requête SQL?
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é.
Code T-SQL pour couper un texte après un caractère
Par ailleurs, cet exemple n’est pas récursif, pour le rendre récursif, intégrer la logique dans une boucle. Ajuster ensuite la variable qui contient la position dans la chaîne principale. Un lien vers la solution récursive est disponible en bas de cet article. Exemple de code SQL Server Substring pour découper un texte après un caractère spécifique.
-- 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'

Enfin, comme évoqué au début de l’article, cette fois, voici un exemple de script SQL pour découper une chaîne de caractère de manière récursive et transformer le résultat en lignes :