Le INSTR()
La fonction renvoie la position de la première occurrence d'une sous-chaîne dans une chaîne. Fondamentalement, il fait la même chose que la syntaxe à deux arguments de LOCATE()
fonctionne (sauf que l'ordre des arguments est inversé).
Syntaxe
La syntaxe ressemble à ceci :
INSTR(str,substr)
Où str
est la chaîne que vous voulez rechercher, et substr
est la sous-chaîne que vous recherchez.
Exemple 1 - Utilisation de base
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.
Exemple 2 – Non sensible à la casse
Il n'est pas sensible à la casse :
SELECT INSTR('Cats and dogs like to run', 'DOGS') AS 'Result 1', INSTR('Cats and DOGS like to run', 'dogs') AS 'Result 2';
Résultat :
+----------+----------+ | Result 1 | Result 2 | +----------+----------+ | 10 | 10 | +----------+----------+
Exemple 3 – Correspondance partielle
Peu importe si votre terme de recherche ne représente qu'une partie d'un mot, il correspondra toujours (après tout, vous recherchez simplement une sous-chaîne dans une chaîne) :
SELECT INSTR('Cats and dogs like to run', 'do') AS Result;
Résultat :
+--------+ | Result | +--------+ | 10 | +--------+
Un espace fait toujours partie de la chaîne. Vous pouvez donc rechercher le premier espace si vous en avez besoin :
SELECT INSTR('Cats and dogs like to run', ' ') AS Result;
Résultat :
+--------+ | Result | +--------+ | 5 | +--------+
Exemple 4 - Première occurrence uniquement
N'oubliez pas que seule la position de la première occurrence est renvoyée :
SELECT INSTR('Cats and dogs like to run', 'a') AS Result;
Résultat :
+--------+ | Result | +--------+ | 2 | +--------+
Exemple 5 - Lorsque la sous-chaîne est introuvable
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 | +--------+
Exemple 6 - Nombre de paramètres incorrect
Si vous omettez l'un des paramètres, vous obtiendrez une erreur :
SELECT INSTR('Cats and dogs like to run') AS Result;
Résultat :
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'INSTR'
Vous obtiendrez également une erreur si vous fournissez trop de paramètres :
SELECT INSTR('Cats and dogs like to run', 'dogs', 'cats') AS Result;
Résultat :
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'INSTR'