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

Comment INSTR() fonctionne dans MariaDB

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)

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'