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

Comment LOCATE() fonctionne dans MariaDB

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) 

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() renvoie 0 :

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 sont null :

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'