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

Comment sélectionner tout avant/après un certain caractère dans MySQL - SUBSTRING_INDEX()

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)

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