LOCATE
La función LOCATE devuelve la posición de la primera aparición de una subcadena dentro de una cadena. Es similar a INSTR pero con un parámetro adicional para indicar desde dónde empezar a buscar.
Sintaxis
-- Buscar desde el inicio
LOCATE(subcadena, cadena)
-- Buscar desde una posición específica
LOCATE(subcadena, cadena, posicion_inicio)POSITION(subcadena IN cadena) es un alias de LOCATE(subcadena, cadena).
Ejemplo básico
SELECT LOCATE('Tutorial', 'MySQL Tutorial') AS posicion;| posicion |
|---|
| 7 |
SELECT LOCATE('Python', 'MySQL Tutorial') AS posicion;| posicion |
|---|
| 0 |
Buscar desde una posición
-- Primera 'a' en la cadena
SELECT LOCATE('a', 'banana') AS primera;| primera |
|---|
| 2 |
-- Buscar 'a' desde la posición 3
SELECT LOCATE('a', 'banana', 3) AS segunda;| segunda |
|---|
| 4 |
-- Buscar 'a' desde la posición 5
SELECT LOCATE('a', 'banana', 5) AS tercera;| tercera |
|---|
| 6 |
Encontrar la segunda aparición de un carácter
-- Posición del segundo espacio en nombres de productos
SELECT
nombre,
LOCATE(' ', nombre) AS primer_espacio,
LOCATE(' ', nombre, LOCATE(' ', nombre) + 1) AS segundo_espacio
FROM productos
WHERE LOCATE(' ', nombre, LOCATE(' ', nombre) + 1) > 0
LIMIT 5;| nombre | primer_espacio | segundo_espacio |
|---|---|---|
| iPhone 15 Pro | 7 | 10 |
| MacBook Air M2 | 8 | 12 |
| Apple Watch Series 9 | 6 | 12 |
Verificar si contiene un texto
SELECT nombre, precio
FROM productos
WHERE LOCATE('Air', nombre) > 0;| nombre | precio |
|---|---|
| MacBook Air M2 | 1199.99 |
| iPad Air | 599.99 |
LOCATE con NULL
SELECT LOCATE('a', NULL) AS resultado;| resultado |
|---|
| NULL |
En el siguiente artículo veremos LPAD para rellenar cadenas por la izquierda.
Escrito por Eduardo Lázaro
