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

Cómo funciona POSITION() en MariaDB

En MariaDB, POSITION() es una función de cadena integrada que devuelve la posición de la primera aparición de una subcadena dentro de otra cadena. Es parte de ODBC 3.0.

POSITION(substr IN str) es un sinónimo de LOCATE(substr,str) .

POSITION() también es similar a INSTR() función, excepto que POSITION() usa el IN sintaxis, y que el orden de los argumentos se invierte entre estas dos funciones.

Sintaxis

La sintaxis es así:

POSITION(substr IN str)

Donde str es la cadena, y substr es la subcadena para la cual devolver la posición de.

Ejemplo

He aquí un ejemplo básico:

SELECT POSITION('cute' IN 'My cute dog');

Resultado:

+-----------------------------------+
| POSITION('cute' IN 'My cute dog') |
+-----------------------------------+
|                                 4 |
+-----------------------------------+

Sensibilidad de mayúsculas y minúsculas

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

SELECT POSITION('CUTE' IN 'My cute dog');

Resultado:

+-----------------------------------+
| POSITION('CUTE' IN 'My cute dog') |
+-----------------------------------+
|                                 4 |
+-----------------------------------+

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 POSITION('cute' IN 'My cute dog is SOOOO cute!');

Resultado:

+--------------------------------------------------+
| POSITION('cute' IN 'My cute dog is SOOOO cute!') |
+--------------------------------------------------+
|                                                4 |
+--------------------------------------------------+

Coincidencia parcial

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

SELECT POSITION('dog' IN 'My doggy is SOOO cute!');

Resultado:

+---------------------------------------------+
| POSITION('dog' IN 'My doggy is SOOO cute!') |
+---------------------------------------------+
|                                           4 |
+---------------------------------------------+

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

SELECT POSITION('doggy' IN 'My dog is SOOO cute!');

Resultado:

+---------------------------------------------+
| POSITION('doggy' IN 'My dog is SOOO cute!') |
+---------------------------------------------+
|                                           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 POSITION(' ' IN 'My dog');

Resultado:

+---------------------------+
| POSITION(' ' IN 'My dog') |
+---------------------------+
|                         3 |
+---------------------------+

Cadena vacía

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

SELECT POSITION('' IN 'My dog');

Resultado:

+--------------------------+
| POSITION('' IN 'My dog') |
+--------------------------+
|                        1 |
+--------------------------+

Sin coincidencia

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

SELECT position('cat' IN 'My dog');

Resultado:

+-----------------------------+
| position('cat' IN 'My dog') |
+-----------------------------+
|                           0 |
+-----------------------------+

Argumentos nulos

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

SELECT 
    POSITION(null IN 'My dog'),
    POSITION('dog' IN null);

Resultado:

+----------------------------+-------------------------+
| POSITION(null IN 'My dog') | POSITION('dog' IN null) |
+----------------------------+-------------------------+
|                       NULL |                    NULL |
+----------------------------+-------------------------+

Proporcionar el número incorrecto de argumentos

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

SELECT POSITION('dog');

Resultado:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1