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

Sélectionnez tout avant ou après un certain caractère dans MariaDB

Dans MariaDB, vous pouvez utiliser le SUBSTRING_INDEX() fonction pour renvoyer tout avant ou après un certain caractère (ou caractères) dans une chaîne.

Cette fonction accepte trois arguments ; la chaîne, le délimiteur et le nombre d'occurrences de ce délimiteur à utiliser pour déterminer la sous-chaîne à renvoyer.

Exemples

Nous pouvons voir comment la fonction fonctionne dans les exemples suivants.

Sélectionner tout avant

Pour tout sélectionner avant un certain caractère, faites du troisième argument une valeur positive :

SELECT SUBSTRING_INDEX('Red,Green,Blue', ',', 2);

Résultat :

Red,Green

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.

J'ai utilisé une virgule dans cet exemple, mais cela aurait pu être n'importe quel caractère ou chaîne :

SELECT SUBSTRING_INDEX('Red or Green or Blue', ' or ', 2);

Résultat :

Red or Green

Sélectionner tout après

Utilisez une valeur négative pour tout sélectionner après un certain caractère :

SELECT SUBSTRING_INDEX('Red,Green,Blue', ',', -2);

Résultat :

Green,Blue

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.

Lorsque le délimiteur est introuvable

Si le délimiteur est introuvable dans la chaîne, la chaîne est renvoyée dans son intégralité.

Exemple :

SELECT SUBSTRING_INDEX('Red,Green,Blue', '-', 1);

Résultat :

Red,Green,Blue

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('Red,Green,Blue', ',', 10);

Résultat :

Red,Green,Blue

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('Red and green and blue', 'AND', 2);

Résultat :

Red and green and blue

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('Red and green and blue', 'and', 2);

Résultat :

Red and green