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

3 façons de trouver la position d'une sous-chaîne dans une chaîne dans MySQL

MySQL a un certain nombre de fonctions de chaîne qui renvoient la position d'une sous-chaîne dans une chaîne. Plus précisément, ils renvoient la position de la première occurrence dans la chaîne (ou la première occurrence après un point de départ donné).

Les fonctions auxquelles je fais référence sont les suivantes :

  • INSTR()
  • LOCATE()
  • POSITION()

Vous trouverez ci-dessous un aperçu de chacun.

INSTR()

Le INSTR() La fonction renvoie la première occurrence d'une sous-chaîne dans une chaîne.

Voici la syntaxe :

INSTR(str,substr)

str est la chaîne que vous voulez rechercher, et substr est la sous-chaîne que vous recherchez.

Exemple

SELECT INSTR('Cats and dogs like to run', 'dogs') AS Result;

Résultat :

+--------+
| Result |
+--------+
|     10 |
+--------+

Dans ce cas, la chaîne dogs commence à la position 10.

Si la sous-chaîne n'est pas trouvée, un résultat de 0 est renvoyé :

SELECT INSTR('Cats and dogs like to run', 'rabbit') AS Result;

Résultat :

+--------+
| Result |
+--------+
|      0 |
+--------+

LOCALISER()

Le LOCATE() la fonction fonctionne de manière similaire, à quelques différences près ; les arguments sont dans un ordre différent et vous pouvez fournir un troisième paramètre facultatif pour indiquer où commencer la recherche.

Par conséquent, vous pouvez l'utiliser de l'une des manières suivantes :

LOCATE(substr,str)
LOCATE(substr,str,pos)

La première syntaxe est comme le INTSR() syntaxe, sauf que str et substr sont échangés.

La deuxième syntaxe ajoute l'optionnel pos argument, qui vous permet de spécifier une position pour commencer la recherche.

Exemple de première syntaxe

Voici un exemple utilisant la première syntaxe :

SELECT LOCATE('dogs', 'Cats and dogs like to run') AS Result;

Résultat :

+--------+
| Result |
+--------+
|     10 |
+--------+

Exemple de deuxième syntaxe

Voici un exemple dans lequel nous spécifions une position de départ pour lancer la recherche :

SELECT LOCATE('cat', 'Cats, cats, and more cats!', 6) AS Result;

Résultat :

+--------+
| Result |
+--------+
|      7 |
+--------+

Nous pouvons voir que la chaîne cat peut être trouvé en position 1, mais nous avons spécifié 6 comme position de départ. Par conséquent, la position de la prochaine occurrence de cette chaîne était celle qui était renvoyée.

Comme avec le INSTR() fonction, si la sous-chaîne n'est pas trouvée, 0 est renvoyé.

POSITION()

Le POSITION() la fonction est synonyme de LOCATE() , mais avec une syntaxe légèrement différente.

Voici la syntaxe :

POSITION(substr IN str)

C'est un synonyme de ce qui suit :

LOCATE(substr,str)

Ainsi, nous pourrions réécrire l'un des exemples précédents comme suit :

SELECT POSITION('dogs' IN 'Cats and dogs like to run') AS Result;

Résultat :

+--------+
| Result |
+--------+
|     10 |
+--------+