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

Comment POSITION() fonctionne dans MariaDB

Dans MariaDB, POSITION() 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. Cela fait partie d'ODBC 3.0.

POSITION(substr IN str) est un synonyme de LOCATE(substr,str) .

POSITION() est également similaire à INSTR() fonction, sauf que POSITION() utilise le IN syntaxe, et que l'ordre des arguments est inversé entre ces deux fonctions.

Syntaxe

La syntaxe ressemble à ceci :

POSITION(substr IN str) 

str est la chaîne, et substr est la sous-chaîne dont la position doit être renvoyée.

Exemple

Voici un exemple de base :

SELECT POSITION('cute' IN 'My cute dog'); 

Résultat :

+-----------------------------------+| POSITION('mignon' DANS 'Mon chien mignon') |+-----------------------------------+ | 4 |+-----------------------------------+

Sensibilité à la casse

POSITION() effectue une recherche insensible à la casse :

SELECT POSITION('CUTE' IN 'My cute dog'); 

Résultat :

+-----------------------------------+| POSITION('MIGNON' DANS 'Mon chien mignon') |+-----------------------------------+ | 4 |+-----------------------------------+

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 POSITION('cute' IN 'My cute dog is SOOOO cute!'); 

Résultat :

+------------------------------------------------------------ ----+| POSITION('mignon' DANS 'Mon adorable chien est TROP mignon !') |+-------------------------------- ------------------+| 4 |+------------------------------------------------------------ ---+

Correspondance partielle

Si la sous-chaîne fait partie d'un mot plus long, il s'agit toujours d'une correspondance :

SELECT POSITION('dog' IN 'My doggy is SOOO cute!'); 

Résultat :

+---------------------------------------------+ | POSITION('chien' DANS 'Mon chien est TELLEMENT mignon !') |+--------------------------------- ------------+| 4 |+---------------------------------------------+ 

Mais si la chaîne n'est qu'une partie de la sous-chaîne, ce n'est pas une correspondance :

SELECT POSITION('doggy' IN 'My dog is SOOO cute!'); 

Résultat :

+---------------------------------------------+ | POSITION('doggy' IN 'Mon chien est TELLEMENT mignon !') |+--------------------------------- ------------+| 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 POSITION(' ' IN 'My dog'); 

Résultat :

+---------------------------+| POSITION(' ' IN 'Mon chien') |+---------------------------+| 3 |+-------------------------------+

Chaîne vide

Voici ce qui se passe lorsque la sous-chaîne est une chaîne vide :

SELECT POSITION('' IN 'My dog'); 

Résultat :

+-----------------------------------+| POSITION('' DANS 'Mon chien') |+--------------------------+| 1 |+---------------------------+

Aucune correspondance

Si la sous-chaîne n'est pas trouvée dans la chaîne, POSITION() renvoie 0 :

SELECT position('cat' IN 'My dog'); 

Résultat :

+-----------------------------+| position('chat' IN 'Mon chien') |+-----------------------------------------+| 0 |+--------------------------------------+

Arguments nuls

Fournir null pour l'un des arguments, les résultats sont null :

SELECT 
    POSITION(null IN 'My dog'),
    POSITION('dog' IN null); 

Résultat :

+----------------------------+----------------- --------+| POSITION(null DANS 'Mon chien') | POSITION('chien' IN null) |+----------------------------+----------- --------------+| NUL | NULL |+----------------------------+------------------ -------+

Fournir le mauvais nombre d'arguments

Appel de POSITION() avec le mauvais nombre d'arguments, ou sans passage d'arguments, une erreur se produit :

SELECT POSITION('dog'); 

Résultat :

ERROR 1064 (42000) :vous avez une erreur dans votre syntaxe SQL ; consultez le manuel qui correspond à la version de votre serveur MariaDB pour la bonne syntaxe à utiliser près de ')' à la ligne 1