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.