Découper une chaîne de caractères Sql Server avec Substring

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:

  1. 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.
  2. Le caractère de début : c’est à dire à partir de quel caractère doit commencer le découpage
  3. 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

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.


*