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'