Dans MariaDB, SUBSTR()
est un synonyme de SUBSTRING()
.
C'est une fonction de chaîne intégrée qui renvoie une sous-chaîne à partir d'une chaîne donnée.
Il nécessite au moins deux arguments ; la chaîne et la position pour laquelle extraire la sous-chaîne. Il accepte également un troisième argument facultatif qui vous permet de spécifier la longueur de la sous-chaîne.
Syntaxe
La syntaxe prend les formes suivantes :
SUBSTR(str,pos),
SUBSTR(str FROM pos),
SUBSTR(str,pos,len),
SUBSTR(str FROM pos FOR len)
Où str
est la chaîne, pos
est la position de départ de la sous-chaîne, et len
est le nombre de caractères à extraire.
Les deux formes qui utilisent le FROM
mot-clé sont la syntaxe SQL standard.
Exemple
Voici un exemple de base :
SELECT SUBSTR('Good doggy', 6);
Résultat :
+-------------------------+ | SUBSTR('Good doggy', 6) | +-------------------------+ | doggy | +-------------------------+
Voici le même exemple, mais en utilisant la syntaxe SQL standard :
SELECT SUBSTR('Good doggy' FROM 6);
Résultat :
+-----------------------------+ | SUBSTR('Good doggy' FROM 6) | +-----------------------------+ | doggy | +-----------------------------+
Longueur de la sous-chaîne
Voici un exemple qui spécifie la longueur de la sous-chaîne à extraire :
SELECT SUBSTR('Good doggy', 6, 3);
Résultat :
+----------------------------+ | SUBSTR('Good doggy', 6, 3) | +----------------------------+ | dog | +----------------------------+
Et ici, il utilise la syntaxe SQL standard :
SELECT SUBSTR('Good doggy' FROM 6 FOR 3);
Résultat :
+-----------------------------------+ | SUBSTR('Good doggy' FROM 6 FOR 3) | +-----------------------------------+ | dog | +-----------------------------------+
Position négative
Si vous spécifiez une valeur négative pour la position, la position de départ est comptée à rebours à partir de la fin de la chaîne :
SELECT SUBSTR('Good doggy', -5);
Résultat :
+--------------------------+ | SUBSTR('Good doggy', -5) | +--------------------------+ | doggy | +--------------------------+
Une position négative peut également être utilisée lors de l'utilisation de la syntaxe SQL standard :
SELECT SUBSTR('Good doggy' FROM -5 FOR 3);
Résultat :
+------------------------------------+ | SUBSTR('Good doggy' FROM -5 FOR 3) | +------------------------------------+ | dog | +------------------------------------+
Dans ce cas, j'ai également défini une longueur pour la sous-chaîne.
Mode Oracle
En mode Oracle, une position de départ de 0
(zéro) est traité comme 1
. Cependant, une position de départ de 1
est également traité comme 1
.
Ceci est en contraste avec les autres modes, où 0
renverra une chaîne vide.
Exemple :
SET SQL_MODE=ORACLE;
SELECT
SUBSTR('Good doggy', 0) AS "0",
SUBSTR('Good doggy', 1) AS "1";
Résultat :
+------------+------------+ | 0 | 1 | +------------+------------+ | Good doggy | Good doggy | +------------+------------+
Le voici en mode par défaut :
SET SQL_MODE=DEFAULT;
SELECT
SUBSTR('Good doggy', 0) AS "0",
SUBSTR('Good doggy', 1) AS "1";
Résultat :
+------+------------+ | 0 | 1 | +------+------------+ | | Good doggy | +------+------------+
Arguments nuls
Si l'un (ou tous) des arguments est null
, le SUBSTR()
la fonction renvoie null
:
SELECT
SUBSTR(null, 3, 3),
SUBSTR('Doggy', null, 3),
SUBSTR('Doggy', 3, null),
SUBSTR(null, null, null);
Résultat :
+--------------------+--------------------------+--------------------------+--------------------------+ | SUBSTR(null, 3, 3) | SUBSTR('Doggy', null, 3) | SUBSTR('Doggy', 3, null) | SUBSTR(null, null, null) | +--------------------+--------------------------+--------------------------+--------------------------+ | NULL | NULL | NULL | NULL | +--------------------+--------------------------+--------------------------+--------------------------+
Arguments manquants
Appel de SUBSTR()
sans passer d'arguments entraîne une erreur :
SELECT SUBSTR();
Résultat :
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1