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;
nombreprimer_espaciosegundo_espacio
iPhone 15 Pro710
MacBook Air M2812
Apple Watch Series 9612

Verificar si contiene un texto

SELECT nombre, precio
FROM productos
WHERE LOCATE('Air', nombre) > 0;
nombreprecio
MacBook Air M21199.99
iPad Air599.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