MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

MariaDB SUBSTR() expliqué

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)

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