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

Comment SUBSTRING() fonctionne dans MariaDB

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)

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