Dans MariaDB, LOCATE()
est une fonction de chaîne intégrée qui renvoie la position de la première occurrence d'une sous-chaîne dans une autre chaîne.
LOCATE()
est similaire à INSTR()
fonction, sauf que LOCATE()
offre la possibilité de spécifier une position de départ pour la recherche. De plus, l'ordre des arguments est inversé entre ces deux fonctions.
Syntaxe
Le LOCATE()
la fonction prend en charge une syntaxe à deux arguments et une syntaxe à trois arguments.
Syntaxe à deux arguments :
LOCATE(substr,str)
Syntaxe à trois arguments :
LOCATE(substr,str,pos)
Où str
est la chaîne, substr
est la sous-chaîne à rechercher, et pos
est la position pour commencer la recherche.
Exemple
Voici un exemple de base :
SELECT LOCATE('hot', 'The hot sun');
Résultat :
+------------------------------+| LOCATE('hot', 'The hot sun') |+------------------------------+| 5 |+------------------------------+
Position de départ
Voici un exemple de fourniture d'une position de départ pour la recherche :
SELECT LOCATE('hot', 'The hot sun is really hot', 8);
Résultat :
+------------------------------------------------------------ --+| LOCATE('chaud', 'Le soleil brûlant est vraiment chaud', 8) |+------------------------------- -----------------+| 23 |+------------------------------------------------------------ -+
Sensibilité à la casse
LOCATE()
effectue une recherche insensible à la casse :
SELECT LOCATE('HOT', 'The hot sun');
Résultat :
+------------------------------+| LOCATE('HOT', 'The hot sun') |+------------------------------+| 5 |+------------------------------+
Occurrences multiples
Si la sous-chaîne apparaît plusieurs fois, seule la position de la première (à partir de la position de départ) est renvoyée :
SELECT LOCATE('hot', 'The hot sun is really hot');
Résultat :
+-------------------------------------------------+| LOCATE('chaud', 'Le soleil chaud est vraiment chaud') |+--------------------------------- -----------+| 5 |+----------------------------------------------------------+Le voici avec une position de départ :
SELECT LOCATE('hot', 'The hot sun is really hot', 20);
Résultat :
+------------------------------------------------------------ --+| LOCATE('chaud', 'Le soleil brûlant est vraiment chaud', 20) |+------------------------------- -----------------+| 23 |+------------------------------------------------------------ -+Correspondance partielle
Si la sous-chaîne fait partie d'un mot plus long, il s'agit toujours d'une correspondance :
SELECT LOCATE('hot', 'The hottest sun');
Résultat :
+------------------------------------------------+| LOCATE('chaud', 'Le soleil le plus chaud') |+----------------------------------+| 5 |+---------------------------------+Mais si la chaîne n'est qu'une partie de la sous-chaîne, ce n'est pas une correspondance :
SELECT LOCATE('hottest', 'The hot sun');
Résultat :
+------------------------------------------------+| LOCATE('le plus chaud', 'Le soleil brûlant') |+----------------------------------+| 0 |+---------------------------------+Espaces
Le caractère espace est toujours une chaîne, nous pouvons donc inclure des espaces dans la sous-chaîne, même s'il s'agit du seul caractère :
SELECT LOCATE(' ', 'The hot sun');
Résultat :
+----------------------------+| LOCATE(' ', 'Le soleil brûlant') |+--------------------------------+| 4 |+----------------------------+Chaîne vide
Voici ce qui se passe lorsque la sous-chaîne est une chaîne vide :
SELECT LOCATE('', 'The hot sun');
Résultat :
+---------------------------+| LOCATE('', 'Le soleil brûlant') |+-----------------------------------+| 1 |+-------------------------------+Aucune correspondance
Si la sous-chaîne n'est pas trouvée dans la chaîne,
LOCATE()
renvoie0
:SELECT LOCATE('cold', 'The hot sun');
Résultat :
+---------------------------------------------+| LOCATE('cold', 'The hot sun') |+-------------------------------+| 0 |+--------------------------------+Arguments nuls
Fournir
null
pour l'un des arguments, les résultats sontnull
:SELECT LOCATE(null, 'The hot sun'), LOCATE('hot', null);
Résultat :
+-------------------------------------------+---------------- -----+| LOCATE(null, 'Le soleil brûlant') | LOCATE('chaud', null) |+--------------------------------------+---------- -----------+| NUL | NULL |+-----------------------------+----------------- ----+Fournir le mauvais nombre d'arguments
Appel de
LOCATE()
avec le mauvais nombre d'arguments, ou sans passage d'arguments, une erreur se produit :SELECT LOCATE('hot');
Résultat :
ERREUR 1582 (42000) :Nombre de paramètres incorrect dans l'appel à la fonction native 'LOCATE'