Requête SQL Server SUBSTRING

Quelle est la syntaxe T-SQL pour découper un champs texte avec la fonction Requête SQL Server SUBSTRING ? Cette fonction permet essentiellement de découper des textes et de sélectionner seulement une partie d’une chaine de caractères.

Exemple de requête SQL Server SUBSTRING

Tout d’abord, la fonction texte SUBSTRING est équivalente à la fonction SUBSTR dans les langages SQL Non Microsoft. Elle permet de découper une chaine de caractères.

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).” en Français.

Ou encore ce message d’erreur : “The substring function requires 3 argument(s).” sur une version SQL Server en Anglais.

Découper une chaine de caractère en dur

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

Imbriquer SUBSTRING avec d’autres fonctions 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

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.


*