Vous pouvez utiliser MySQL SUBSTRING_INDEX()
fonction pour renvoyer tout avant ou après un certain caractère (ou caractères) dans une chaîne.
Cette fonction vous permet de spécifier le délimiteur à utiliser, et vous pouvez spécifier lequel (dans le cas où il y en a plusieurs dans la chaîne).
Syntaxe
Voici la syntaxe :
SUBSTRING_INDEX(str,delim,count)
Où str
est la chaîne, delim
est le délimiteur (à partir duquel vous voulez une sous-chaîne à gauche ou à droite), et count
spécifie quel délimiteur (dans le cas où il y a plusieurs occurrences du délimiteur dans la chaîne).
Notez que le délimiteur peut être un seul caractère ou plusieurs caractères.
Exemple 1 – Sélectionner tout à gauche
Pour tout sélectionner avant un certain caractère, utilisez une valeur positive :
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', 2);
Résultat :
Cats,Dogs
Dans cet exemple, nous sélectionnons tout avant la deuxième virgule. Ceci est fait en utilisant une virgule (,
) comme délimiteur, et 2
comme décompte.
Exemple 2 – Sélectionner tout à droite
Pour tout sélectionner après un certain caractère, vous devez utiliser une valeur négative :
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', -2);
Résultat :
Dogs,Rabbits
Notez que la valeur négative signifie qu'elle comptera à partir de la droite, puis sélectionnez la sous-chaîne à droite du délimiteur.
Que faire si le délimiteur ne correspond pas ?
Si le délimiteur n'est pas trouvé dans la chaîne, la chaîne est simplement renvoyée dans son intégralité.
Exemple :
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', '-', 1);
Résultat :
Cats,Dogs,Rabbits
Dans ce cas, la chaîne entière est renvoyée en entier car nous avons utilisé un trait d'union (-
) comme délimiteur mais il n'y avait pas de trait d'union dans la chaîne.
Nous obtiendrions le même résultat si la chaîne fait contenir le délimiteur, mais notre count
dépasse le nombre de délimiteurs dans la chaîne.
Exemple :
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', 10);
Résultat :
Cats,Dogs,Rabbits
Sensibilité à la casse
Le SUBSTRING_INDEX()
La fonction effectue une recherche sensible à la casse pour le délimiteur. C'est-à-dire que le délimiteur doit être dans la bonne casse avant de correspondre.
Cas incorrect
Voici un exemple où la casse ne correspond pas :
SELECT SUBSTRING_INDEX('Cats and Dogs and Rabbits', 'AND', 2);
Résultat :
Cats and Dogs and Rabbits
Nous obtenons toute la chaîne dans son intégralité.
Corriger la casse
Voici maintenant le même exemple, mais où la casse correspond :
SELECT SUBSTRING_INDEX('Cats and Dogs and Rabbits', 'and', 2);
Résultat :
Cats and Dogs