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

La différence entre INSTR() et LOCATE() dans MariaDB

MariaDB a un INSTR() fonction et aussi un LOCATE() une fonction. Les deux fonctions semblent faire exactement la même chose :renvoyer la position d'une sous-chaîne dans une chaîne.

Cependant, il y a une différence.

Les différences

Nous pouvons voir la différence entre ces deux fonctions en regardant leur syntaxe, ainsi que quelques exemples.

Syntaxe

La syntaxe de INSTR() :

INSTR(str,substr)

Les deux syntaxes acceptées pour LOCATE() :

LOCATE(substr,str)
LOCATE(substr,str,pos)

str est la chaîne, substr est la sous-chaîne à rechercher, et pos est la position pour commencer la recherche.

La différence entre les deux fonctions peut être résumée comme suit :

  • Le LOCATE() la fonction accepte les deux mêmes arguments que INSTR() accepte, mais dans l'ordre inverse.
  • Le LOCATE() La fonction accepte un troisième argument facultatif pour spécifier la position de départ de la recherche. Le INSTR() la fonction n'accepte pas un tel argument.

Donc LOCATE() fournit des fonctionnalités supplémentaires que INSTR() ne fournit pas.

Exemple 1 - La première différence

Voici un exemple qui montre l'ordre inverse dans lequel les deux fonctions acceptent leurs arguments :

SELECT 
    INSTR('Disconnect', 'con'),
    LOCATE('con', 'Disconnect');

Résultat :

+----------------------------+-----------------------------+
| INSTR('Disconnect', 'con') | LOCATE('con', 'Disconnect') |
+----------------------------+-----------------------------+
|                          4 |                           4 |
+----------------------------+-----------------------------+

Exemple 2 - La deuxième différence

Voici un exemple qui montre la fonctionnalité supplémentaire que LOCATE() fournit sur INSTR() :

SELECT 
    INSTR('My cat is a good cat', 'cat') AS "INSTR()",
    LOCATE('cat', 'My cat is a good cat') AS "LOCATE()",
    LOCATE('cat', 'My cat is a good cat', 10) AS "LOCATE() with 3rd Argument";

Résultat :

+---------+----------+----------------------------+
| INSTR() | LOCATE() | LOCATE() with 3rd Argument |
+---------+----------+----------------------------+
|       4 |        4 |                         18 |
+---------+----------+----------------------------+

Cet exemple met en évidence le fait que le LOCATE() La fonction nous fournit un troisième argument optionnel. Cet argument nous permet de spécifier une position de départ pour la recherche, ce qui signifie que nous ne sommes pas limités à la première occurrence dans toute la chaîne.