Exemples de scripts pour découper une chaîne de caractères avec la fonction SQL Server SUBSTRING.
Cette fonction texte fournie par le SGBD permet essentiellement de découper des textes et de sélectionner seulement une partie d’une chaine de caractères. Tout d’abord, la fonction texte SUBSTRING est équivalente à la fonction SUBSTR dans les langages SQL non Microsoft, comme Oracle ou MySQL qui utilise les deux, SUBTR et SUBSTRING. Elle permet de découper une chaine de caractères.
Exemples de requêtes SQL Server SUBSTRING
La fonction utilise 3 arguments obligatoires qui sont les suivants:
- L’expression : Le champs texte à découper, les types supportés sont les suivants: caractères, binaire, text, ntext ou le type image. L’expression à découper peut bien sûr être contenu dans une variable T-SQL.
- Le caractère de début : c’est à dire à partir de quel caractère doit commencer le découpage
- La longueur : c’est le nombre de caractères que la fonction SUBSTRING retourne, soit la longueur maximale du texte à découpé
Si un des arguments est manquant, le système renvoie cette erreur: La fonction substring requiert 3 argument(s)., sur une version Francaise de SQL Server. Ou encore ce message d’erreur : The substring function requires 3 argument(s). sur une version SQL Server en Anglais.
1. Découper une chaine de caractère statique avec la fonction SQL Server Substring
Cette requête renvoie les trois premières lettres de la chaine ABCDEFGH qui en contient huit.
SELECT SUBSTRING('ABCDEFGH', 1, 3) AS Résultat; -- Résultat ABC
Cet autre exemple montre comment utiliser le deuxième argument (c’est à dire le caractère de début), cette fois avec une valeur négative. Le SGBD utilise le plus grand des nombres entre début + longueur -1 et 0. Soit dans notre exemple :
0+3-1 = 2
Donc seules les deux premières lettres de l’alphabet sont affichées.
SELECT SUBSTRING('ABCDEFGH', 0, 3) AS Résultat; -- Résultat AB
2. Imbriquer la fonction avec d’autres fonctions natives SQL Server
Il est bien sûr possible de réutiliser le résultat directement dans une fonction texte. Par exemple avec le nom du moins SQL Server. La première partie de la requête affiche donc le nom du mois en cours en toutes lettres : Juillet
Par contre la deuxième partie retourne uniquement les 4 premières lettres du Mois : Juil
SELECT DATENAME(MONTH, GETDATE()); -- Résultat Juillet SELECT SUBSTRING(DATENAME(MONTH, GETDATE()), 1, 4) AS Résultat; -- Résultat Juil
3. Utiliser la fonction SUBSTRING avec des variables T-SQL
Enfin, pour encore plus de lisibilité, de modularité et de réutilisabilité, utiliser des variables dans le code. Voici donc un exemple qui renvoie une variable avec le nom du jour en toutes lettres, en majuscules et qui retourne seulement les 3 premières lettres du jour de la semaine en texte.
DECLARE @Jour as NVARCHAR(20); SELECT @Jour = DATENAME(WEEKDAY, GETDATE()); SELECT UPPER(@Jour); -- Résultat : jour en toutes lettres JEUDI SELECT UPPER(SUBSTRING(@Jour, 1, 3)); -- Résultat : les trois premières lettres du jour de semaine JEU
Les fonctions textes comme les fonctions temps sont au centre du développement et donc des tutoriels SQL Server. Elles permettent de manipuler les données et d’afficher différentes parties des dates sous différents formats.
Soyez le premier à commenter