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

Fonctionnement de la fonction POSITION() dans MySQL

Dans MySQL, la valeur POSITION() La fonction renvoie la position de la première occurrence d'une sous-chaîne dans la chaîne.

Cette fonction est en fait un synonyme de LOCATE() , mais avec une syntaxe légèrement différente. Le LOCATE() La fonction a également des fonctionnalités supplémentaires, en ce sens qu'elle vous permet de définir une position de départ pour votre recherche.

Syntaxe

La syntaxe de base ressemble à ceci :

POSITION(substr IN str)

substr est la sous-chaîne et str est la chaîne.

Exemple 1 - Utilisation de base

SELECT POSITION('Cat' IN 'The Cat') Result;

Résultat :

+--------+
| Result |
+--------+
|      5 |
+--------+

Exemple 2 – Sensibilité à la casse

Le POSITION() La fonction est sécurisée sur plusieurs octets et est sensible à la casse uniquement si au moins un argument est une chaîne binaire.

L'exemple suivant est donc insensible à la casse :

SELECT POSITION('Cat' IN 'The cat') Result;

Résultat :

+--------+
| Result |
+--------+
|      5 |
+--------+

Exemple 3 – Aucune correspondance

La fonction renvoie 0 si la sous-chaîne n'est pas trouvée dans la chaîne :

SELECT POSITION('Dog' IN 'The cat') Result;

Résultat :

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

Exemple 4 - Sous-chaînes incorporées

Soyez prudent lorsque vous choisissez la sous-chaîne. S'il fait partie d'un autre mot, vous pourriez obtenir un faux positif :

SELECT POSITION('Cat' IN 'Good Catch!') Result;

Résultat :

+--------+
| Result |
+--------+
|      6 |
+--------+

Si vous ne cherchez que chat , l'animal, ce serait un faux positif.

Exemple 5 - Première occurrence uniquement

N'oubliez pas que cette fonction ne renvoie que la position du premier occurrence de la sous-chaîne. Toutes les occurrences suivantes sont ignorées :

SELECT POSITION('Cat' IN 'My cat is bigger than your cat') Result;

Résultat :

+--------+
| Result |
+--------+
|      4 |
+--------+

Exemple 6 – Arguments NULL

Si l'un des arguments est NULL , le résultat est NULL :

SELECT 
  POSITION('Cat' IN NULL) 'Result 1',
  POSITION(NULL IN 'The Cat') 'Result 2';

Résultat :

+----------+----------+
| Result 1 | Result 2 |
+----------+----------+
|     NULL |     NULL |
+----------+----------+

Comme mentionné, vous pouvez également utiliser le LOCATE() fonction, qui vous permet de définir une position de départ pour votre recherche.