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

Cómo funciona LOCATE() en MariaDB

En MariaDB, LOCATE() es una función de cadena integrada que devuelve la posición de la primera aparición de una subcadena dentro de otra cadena.

LOCATE() es similar al INSTR() función, excepto que LOCATE() ofrece la opción de especificar una posición inicial para la búsqueda. Además, el orden de los argumentos se invierte entre estas dos funciones.

Sintaxis

El LOCATE() La función admite una sintaxis de dos argumentos y una sintaxis de tres argumentos.

Sintaxis de dos argumentos:

LOCATE(substr,str)

Sintaxis de tres argumentos:

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.

Ejemplo

He aquí un ejemplo básico:

SELECT LOCATE('hot', 'The hot sun');

Resultado:

+------------------------------+
| LOCATE('hot', 'The hot sun') |
+------------------------------+
|                            5 |
+------------------------------+

Posición inicial

Este es un ejemplo de proporcionar una posición inicial para la búsqueda:

SELECT LOCATE('hot', 'The hot sun is really hot', 8);

Resultado:

+------------------------------------------------+
| LOCATE('hot', 'The hot sun is really hot', 8)  |
+------------------------------------------------+
|                                             23 |
+------------------------------------------------+

Sensibilidad de mayúsculas y minúsculas

LOCATE() realiza una búsqueda que no distingue entre mayúsculas y minúsculas:

SELECT LOCATE('HOT', 'The hot sun');

Resultado:

+------------------------------+
| LOCATE('HOT', 'The hot sun') |
+------------------------------+
|                            5 |
+------------------------------+

Ocurrencias Múltiples

Si la subcadena aparece más de una vez, solo se devuelve la posición de la primera (desde la posición inicial):

SELECT LOCATE('hot', 'The hot sun is really hot');

Resultado:

+--------------------------------------------+
| LOCATE('hot', 'The hot sun is really hot') |
+--------------------------------------------+
|                                          5 |
+--------------------------------------------+

Aquí está con una posición inicial:

SELECT LOCATE('hot', 'The hot sun is really hot', 20);

Resultado:

+------------------------------------------------+
| LOCATE('hot', 'The hot sun is really hot', 20) |
+------------------------------------------------+
|                                             23 |
+------------------------------------------------+

Coincidencia parcial

Si la subcadena es parte de una palabra más grande, sigue siendo una coincidencia:

SELECT LOCATE('hot', 'The hottest sun');

Resultado:

+----------------------------------+
| LOCATE('hot', 'The hottest sun') |
+----------------------------------+
|                                5 |
+----------------------------------+

Pero si la cadena es solo parte de la subcadena, no es una coincidencia:

SELECT LOCATE('hottest', 'The hot sun');

Resultado:

+----------------------------------+
| LOCATE('hottest', 'The hot sun') |
+----------------------------------+
|                                0 |
+----------------------------------+

Espacios

El carácter de espacio sigue siendo una cadena, por lo que podemos incluir espacios en la subcadena, incluso si es el único carácter:

SELECT LOCATE(' ', 'The hot sun');

Resultado:

+----------------------------+
| LOCATE(' ', 'The hot sun') |
+----------------------------+
|                          4 |
+----------------------------+

Cadena vacía

Esto es lo que sucede cuando la subcadena es una cadena vacía:

SELECT LOCATE('', 'The hot sun');

Resultado:

+---------------------------+
| LOCATE('', 'The hot sun') |
+---------------------------+
|                         1 |
+---------------------------+

Sin coincidencia

Si la subcadena no se encuentra en la cadena, LOCATE() devuelve 0 :

SELECT LOCATE('cold', 'The hot sun');

Resultado:

+-------------------------------+
| LOCATE('cold', 'The hot sun') |
+-------------------------------+
|                             0 |
+-------------------------------+

Argumentos nulos

Proporcionar null para cualquiera de los resultados de los argumentos en null :

SELECT 
    LOCATE(null, 'The hot sun'),
    LOCATE('hot', null);

Resultado:

+-----------------------------+---------------------+
| LOCATE(null, 'The hot sun') | LOCATE('hot', null) |
+-----------------------------+---------------------+
|                        NULL |                NULL |
+-----------------------------+---------------------+

Proporcionar el número incorrecto de argumentos

Llamando a LOCATE() con el número incorrecto de argumentos, o sin pasar ningún argumento da como resultado un error:

SELECT LOCATE('hot');

Resultado:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LOCATE'