Dans MariaDB, INSTR() 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.
INSTR() est similaire à LOCATE() 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
La syntaxe ressemble à ceci :
INSTR(str,substr)
Où str est la chaîne, substr est la sous-chaîne à rechercher.
Exemple
Voici un exemple de base :
SELECT INSTR('The hot sun', 'hot'); Résultat :
+-----------------------------+
| INSTR('The hot sun', 'hot') |
+-----------------------------+
| 5 |
+-----------------------------+ Insensible à la casse
INSTR() effectue une recherche insensible à la casse :
SELECT INSTR('The hot sun', 'HOT'); Résultat :
+-----------------------------+
| INSTR('The hot sun', 'HOT') |
+-----------------------------+
| 5 |
+-----------------------------+ Occurrences multiples
Si la sous-chaîne apparaît plusieurs fois, seule la position de la première est renvoyée :
SELECT INSTR('The hot sun is really hot', 'hot'); Résultat :
+-------------------------------------------+
| INSTR('The hot sun is really hot', 'hot') |
+-------------------------------------------+
| 5 |
+-------------------------------------------+ Correspondance partielle
Si la sous-chaîne fait partie d'un mot plus long, il s'agit toujours d'une correspondance :
SELECT INSTR('The hottest sun', 'hot'); Résultat :
+---------------------------------+
| INSTR('The hottest sun', 'hot') |
+---------------------------------+
| 5 |
+---------------------------------+ Mais si la chaîne n'est qu'une partie de la sous-chaîne, ce n'est pas une correspondance :
SELECT INSTR('The hot sun', 'hottest'); Résultat :
+---------------------------------+
| INSTR('The hot sun', 'hottest') |
+---------------------------------+
| 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 INSTR('The hot sun', ' '); Résultat :
+---------------------------+
| INSTR('The hot sun', ' ') |
+---------------------------+
| 4 |
+---------------------------+ Chaîne vide
Voici ce qui se passe lorsque la sous-chaîne est une chaîne vide :
SELECT INSTR('The hot sun', ''); Résultat :
+--------------------------+
| INSTR('The hot sun', '') |
+--------------------------+
| 1 |
+--------------------------+ Aucune correspondance
Si la sous-chaîne n'est pas trouvée dans la chaîne, INSTR() renvoie 0 :
SELECT INSTR('The hot sun', 'cold'); Résultat :
+------------------------------+
| INSTR('The hot sun', 'cold') |
+------------------------------+
| 0 |
+------------------------------+ Arguments nuls
Fournir null pour l'un des arguments, les résultats sont null :
SELECT
INSTR('The hot sun', null),
INSTR(null, 'hot'); Résultat :
+----------------------------+--------------------+
| INSTR('The hot sun', null) | INSTR(null, 'hot') |
+----------------------------+--------------------+
| NULL | NULL |
+----------------------------+--------------------+ Fournir le mauvais nombre d'arguments
Appel de INSTR() avec le mauvais nombre d'arguments, ou sans passage d'arguments, une erreur se produit :
SELECT INSTR('hot'); Résultat :
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'INSTR'