sql >> Base de Datos >  >> RDS >> MariaDB

La diferencia entre INSTR() y LOCATE() en MariaDB

MariaDB tiene un INSTR() función y también un LOCATE() función. Ambas funciones parecen hacer exactamente lo mismo:devolver la posición de una subcadena dentro de una cadena.

Sin embargo, hay una diferencia.

Las diferencias

Podemos ver la diferencia entre estas dos funciones mirando su sintaxis, así como un par de ejemplos.

Sintaxis

La sintaxis de INSTR() :

INSTR(str,substr)

Las dos sintaxis aceptadas para LOCATE() :

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

Donde str es la cadena, substr es la subcadena a buscar, y pos es la posición para iniciar la búsqueda.

La diferencia entre las dos funciones se puede resumir de la siguiente manera:

  • El LOCATE() La función acepta los mismos dos argumentos que INSTR() acepta, pero en orden inverso.
  • El LOCATE() La función acepta un tercer argumento opcional para especificar la posición inicial de la búsqueda. El INSTR() la función no acepta tal argumento.

Entonces LOCATE() proporciona una funcionalidad adicional que INSTR() no proporciona

Ejemplo 1:la primera diferencia

Aquí hay un ejemplo que muestra el orden inverso en el que las dos funciones aceptan sus argumentos:

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

Resultado:

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

Ejemplo 2:la segunda diferencia

Aquí hay un ejemplo que muestra la funcionalidad extra que LOCATE() proporciona sobre 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";

Resultado:

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

Este ejemplo destaca el hecho de que LOCATE() función nos proporciona un tercer argumento opcional. Este argumento nos permite especificar una posición inicial para la búsqueda, lo que significa que no estamos limitados solo a la primera aparición en toda la cadena.