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.