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() 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