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'