INSTR

La función INSTR devuelve la posición de la primera aparición de una subcadena dentro de una cadena. Devuelve 0 si no la encuentra.

Sintaxis

INSTR(cadena, subcadena)

Las posiciones empiezan en 1.

Ejemplo básico

SELECT INSTR('MySQL Tutorial', 'Tutorial') AS posicion;
posicion
7
SELECT INSTR('MySQL Tutorial', 'Python') AS posicion;
posicion
0

No encontrado devuelve 0.

Buscar en datos de productos

SELECT nombre, INSTR(nombre, 'Pro') AS posicion_pro
FROM productos
WHERE INSTR(nombre, 'Pro') > 0;
nombreposicion_pro
iPhone 15 Pro11
AirPods Pro9

Encontrar la arroba en emails

SELECT
    email,
    INSTR(email, '@') AS pos_arroba
FROM clientes
LIMIT 5;
emailpos_arroba
maria.garcia@email.com13
carlos.rodriguez@email.com17
laura.lopez@email.com12
pedro.fernandez@email.com16
ana.martinez@email.com13

Combinar con SUBSTRING

SELECT
    email,
    SUBSTRING(email, 1, INSTR(email, '@') - 1) AS usuario,
    SUBSTRING(email, INSTR(email, '@') + 1) AS dominio
FROM clientes
LIMIT 3;
emailusuariodominio
maria.garcia@email.commaria.garciaemail.com
carlos.rodriguez@email.comcarlos.rodriguezemail.com
laura.lopez@email.comlaura.lopezemail.com

INSTR es case-insensitive

Por defecto, con collation utf8mb4_0900_ai_ci, INSTR no distingue mayúsculas:

SELECT INSTR('MySQL Tutorial', 'mysql') AS posicion;
posicion
1

INSTR vs LOCATE

CaracterísticaINSTRLOCATE
Orden de argumentosINSTR(cadena, buscar)LOCATE(buscar, cadena)
Posición inicialNo soportaTercer argumento opcional
FuncionalidadBásicaPermite buscar desde posición N

En el siguiente artículo veremos LOCATE, que ofrece más flexibilidad.

Escrito por Eduardo Lázaro