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

Comment fonctionne MID() dans MariaDB

Dans MariaDB, MID() est un synonyme de SUBSTRING() . Il renvoie une sous-chaîne à partir d'une chaîne donnée.

Selon la documentation de MariaDB, c'est un synonyme de SUBSTRING(str,pos,len) syntaxe de SUBSTRING() , cependant, mes tests montrent que cela fonctionne avec tous les différents formulaires.

Syntaxe

Selon la documentation de MariaDB, la syntaxe ressemble à ceci :

MID(str,pos,len)

Cependant, j'ai trouvé que cela fonctionne avec les formulaires suivants (qui sont les mêmes formulaires que SUBSTRING() prend en charge):

MID(str,pos), 
MID(str FROM pos), 
MID(str,pos,len),
MID(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.

Exemple

Voici un exemple de base :

SELECT MID('Drink your beer', 7);

Résultat :

+---------------------------+
| MID('Drink your beer', 7) |
+---------------------------+
| your beer                 |
+---------------------------+

Voici le même exemple, mais en utilisant le FROM syntaxe :

SELECT MID('Drink your beer' FROM 7);

Résultat :

+-------------------------------+
| MID('Drink your beer' FROM 7) |
+-------------------------------+
| your beer                     |
+-------------------------------+

Longueur de la sous-chaîne

Voici un exemple qui spécifie la longueur de la sous-chaîne à extraire. C'est la seule syntaxe que la documentation MariaDB cite pour le MID() fonction.

SELECT MID('Drink your beer', 7, 4);

Résultat :

+------------------------------+
| MID('Drink your beer', 7, 4) |
+------------------------------+
| your                         |
+------------------------------+

Et ici, il utilise FROM...FOR syntaxe :

SELECT MID('Drink your beer' FROM 7 FOR 4);

Résultat :

+-------------------------------------+
| MID('Drink your beer' FROM 7 FOR 4) |
+-------------------------------------+
| your                                |
+-------------------------------------+

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 MID('Drink your beer', -9);

Résultat :

+----------------------------+
| MID('Drink your beer', -9) |
+----------------------------+
| your beer                  |
+----------------------------+

Une position négative peut également être utilisée lors de l'utilisation de FROM syntaxe :

SELECT MID('Drink your beer' FROM -9 FOR 4);

Résultat :

+--------------------------------------+
| MID('Drink your beer' FROM -9 FOR 4) |
+--------------------------------------+
| your                                 |
+--------------------------------------+

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 
    MID('Drink your beer', 0) AS "0",
    MID('Drink your beer', 1) AS "1";

Résultat :

+-----------------+-----------------+
| 0               | 1               |
+-----------------+-----------------+
| Drink your beer | Drink your beer |
+-----------------+-----------------+

Le voici en mode par défaut :

SET SQL_MODE=DEFAULT;
SELECT 
    MID('Drink your beer', 0) AS "0",
    MID('Drink your beer', 1) AS "1";

Résultat :

+------+-----------------+
| 0    | 1               |
+------+-----------------+
|      | Drink your beer |
+------+-----------------+

Arguments nuls

Si l'un (ou tous) des arguments est null , le MID() la fonction renvoie null :

SELECT 
    MID(null, 3, 3),
    MID('Beer', null, 3),
    MID('Beer', 3, null),
    MID(null, null, null);

Résultat :

+-----------------+----------------------+----------------------+-----------------------+
| MID(null, 3, 3) | MID('Beer', null, 3) | MID('Beer', 3, null) | MID(null, null, null) |
+-----------------+----------------------+----------------------+-----------------------+
| NULL            | NULL                 | NULL                 | NULL                  |
+-----------------+----------------------+----------------------+-----------------------+

Arguments manquants

Appel de MID() sans passer d'arguments entraîne une erreur :

SELECT MID();

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