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)
Où 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.