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