Dans MariaDB, SUBSTRING() est une fonction de chaîne intégrée qui renvoie une sous-chaîne à partir d'une chaîne donnée.
SUBSTRING() 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 :
SUBSTRING(str,pos),
SUBSTRING(str FROM pos),
SUBSTRING(str,pos,len),
SUBSTRING(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 SUBSTRING('Big fat cat', 5); Résultat :
+-----------------------------+
| SUBSTRING('Big fat cat', 5) |
+-----------------------------+
| fat cat |
+-----------------------------+ Voici le même exemple, mais en utilisant la syntaxe SQL standard :
SELECT SUBSTRING('Big fat cat' FROM 5); Résultat :
+---------------------------------+
| SUBSTRING('Big fat cat' FROM 5) |
+---------------------------------+
| fat cat |
+---------------------------------+ Longueur de la sous-chaîne
Voici un exemple qui spécifie la longueur de la sous-chaîne à extraire :
SELECT SUBSTRING('Big fat cat', 5, 3); Résultat :
+--------------------------------+
| SUBSTRING('Big fat cat', 5, 3) |
+--------------------------------+
| fat |
+--------------------------------+ Et ici, il utilise la syntaxe SQL standard :
SELECT SUBSTRING('Big fat cat' FROM 5 FOR 3); Résultat :
+---------------------------------------+
| SUBSTRING('Big fat cat' FROM 5 FOR 3) |
+---------------------------------------+
| fat |
+---------------------------------------+ 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 SUBSTRING('Big fat cat', -3); Résultat :
+------------------------------+
| SUBSTRING('Big fat cat', -3) |
+------------------------------+
| cat |
+------------------------------+ Une position négative peut également être utilisée lors de l'utilisation de la syntaxe SQL standard :
SELECT SUBSTRING('Big fat cat' FROM -7 FOR 3); Résultat :
+----------------------------------------+
| SUBSTRING('Big fat cat' FROM -7 FOR 3) |
+----------------------------------------+
| fat |
+----------------------------------------+ 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
SUBSTRING('Big fat cat', 0) AS "0",
SUBSTRING('Big fat cat', 1) AS "1"; Résultat :
+-------------+-------------+ | 0 | 1 | +-------------+-------------+ | Big fat cat | Big fat cat | +-------------+-------------+
Le voici en mode par défaut :
SET SQL_MODE=DEFAULT;
SELECT
SUBSTRING('Big fat cat', 0) AS "0",
SUBSTRING('Big fat cat', 1) AS "1"; Résultat :
+------+-------------+ | 0 | 1 | +------+-------------+ | | Big fat cat | +------+-------------+
Arguments nuls
Si l'un (ou tous) des arguments est null , le SUBSTRING() la fonction renvoie null :
SELECT
SUBSTRING(null, 3, 3),
SUBSTRING('Coffee', null, 3),
SUBSTRING('Coffee', 3, null),
SUBSTRING(null, null, null); Résultat :
+-----------------------+------------------------------+------------------------------+-----------------------------+
| SUBSTRING(null, 3, 3) | SUBSTRING('Coffee', null, 3) | SUBSTRING('Coffee', 3, null) | SUBSTRING(null, null, null) |
+-----------------------+------------------------------+------------------------------+-----------------------------+
| NULL | NULL | NULL | NULL |
+-----------------------+------------------------------+------------------------------+-----------------------------+ Arguments manquants
Appel de SUBSTRING() sans passer d'arguments entraîne une erreur :
SELECT SUBSTRING(); 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