sql >> Base de Datos >  >> RDS >> Mysql

Cómo funciona la función POSITION() en MySQL

En MySQL, el POSITION() La función devuelve la posición de la primera aparición de una subcadena dentro de la cadena.

Esta función es en realidad un sinónimo de LOCATE() , pero con una sintaxis ligeramente diferente. El LOCATE() La función también tiene una funcionalidad adicional, ya que le permite definir una posición inicial para su búsqueda.

Sintaxis

La sintaxis básica es así:

POSITION(substr IN str)

Donde substr es la subcadena y str es la cadena.

Ejemplo 1:uso básico

SELECT POSITION('Cat' IN 'The Cat') Result;

Resultado:

+--------+
| Result |
+--------+
|      5 |
+--------+

Ejemplo 2:Sensibilidad entre mayúsculas y minúsculas

La POSITION() La función es segura para varios bytes y distingue entre mayúsculas y minúsculas solo si al menos un argumento es una cadena binaria.

Entonces, el siguiente ejemplo no distingue entre mayúsculas y minúsculas:

SELECT POSITION('Cat' IN 'The cat') Result;

Resultado:

+--------+
| Result |
+--------+
|      5 |
+--------+

Ejemplo 3:Sin coincidencia

La función devuelve 0 si la subcadena no se encuentra dentro de la cadena:

SELECT POSITION('Dog' IN 'The cat') Result;

Resultado:

+--------+
| Result |
+--------+
|      0 |
+--------+

Ejemplo 4:subcadenas incrustadas

Tenga cuidado al elegir la subcadena. Si es parte de otra palabra, podría obtener un falso positivo:

SELECT POSITION('Cat' IN 'Good Catch!') Result;

Resultado:

+--------+
| Result |
+--------+
|      6 |
+--------+

Si solo estás buscando gato , el animal, esto sería un falso positivo.

Ejemplo 5:Primera ocurrencia solamente

Recuerde, esta función solo devuelve la posición del primero aparición de la subcadena. Cualquier aparición posterior se ignora:

SELECT POSITION('Cat' IN 'My cat is bigger than your cat') Result;

Resultado:

+--------+
| Result |
+--------+
|      4 |
+--------+

Ejemplo 6:Argumentos NULL

Si alguno de los argumentos es NULL , el resultado es NULL :

SELECT 
  POSITION('Cat' IN NULL) 'Result 1',
  POSITION(NULL IN 'The Cat') 'Result 2';

Resultado:

+----------+----------+
| Result 1 | Result 2 |
+----------+----------+
|     NULL |     NULL |
+----------+----------+

Como se mencionó, también puede usar LOCATE() función, que le permite definir una posición inicial para su búsqueda.