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

Comment SUBSTRING_INDEX() fonctionne dans MariaDB

Dans MariaDB, SUBSTRING_INDEX() est une fonction de chaîne intégrée. Il renvoie une sous-chaîne à partir d'une chaîne avant un certain nombre d'occurrences du délimiteur spécifié.

SUBSTRING_INDEX() requiert à trois arguments ; la chaîne, le délimiteur et le nombre (c'est-à-dire le nombre d'occurrences de ce délimiteur).

Syntaxe

La syntaxe ressemble à ceci :

SUBSTRING_INDEX(str,delim,count)

str est la chaîne, delim est le délimiteur, et count est le nombre d'occurrences de ce délimiteur à utiliser pour déterminer la sous-chaîne à renvoyer.

Si count est positif, tout ce qui se trouve à gauche du dernier délimiteur (en partant de la gauche) est renvoyé. Si count est négatif, tout ce qui se trouve à droite du délimiteur final (en partant de la droite) est renvoyé.

Exemple

Voici un exemple de base :

SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', 3);

Résultat :

+-------------------------------------------------------+
| SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', 3) |
+-------------------------------------------------------+
| /users/homer                                          |
+-------------------------------------------------------+

Comptage négatif

Si vous spécifiez une valeur négative pour le nombre, celui-ci sera compté à rebours à partir de la fin de la chaîne :

SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', -3);

Résultat :

+--------------------------------------------------------+
| SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', -3) |
+--------------------------------------------------------+
| homer/docs/cat_vids                                    |
+--------------------------------------------------------+

Délimiteur introuvable

Si le délimiteur n'existe pas dans la chaîne, la chaîne entière est renvoyée :

SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '.', 3);

Résultat :

+-------------------------------------------------------+
| SUBSTRING_INDEX('/users/homer/docs/cat_vids', '.', 3) |
+-------------------------------------------------------+
| /users/homer/docs/cat_vids                            |
+-------------------------------------------------------+

Arguments nuls

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

SELECT 
    SUBSTRING_INDEX(null, '/', 3) AS "1",
    SUBSTRING_INDEX('/users/homer/docs/cat_vids', null, 3) AS "2",
    SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', null) AS "3",
    SUBSTRING_INDEX(null, null, null) AS "4";

Résultat :

+------+------+------+------+
| 1    | 2    | 3    | 4    |
+------+------+------+------+
| NULL | NULL | NULL | NULL |
+------+------+------+------+

Arguments manquants

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

SELECT SUBSTRING_INDEX();

Résultat :

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'SUBSTRING_INDEX'