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)
Où 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()
renvoie0
: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 sontnull
: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