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)
Où 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'