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;| nombre | posicion_pro |
|---|---|
| iPhone 15 Pro | 11 |
| AirPods Pro | 9 |
Encontrar la arroba en emails
SELECT
email,
INSTR(email, '@') AS pos_arroba
FROM clientes
LIMIT 5;| pos_arroba | |
|---|---|
| maria.garcia@email.com | 13 |
| carlos.rodriguez@email.com | 17 |
| laura.lopez@email.com | 12 |
| pedro.fernandez@email.com | 16 |
| ana.martinez@email.com | 13 |
Combinar con SUBSTRING
SELECT
email,
SUBSTRING(email, 1, INSTR(email, '@') - 1) AS usuario,
SUBSTRING(email, INSTR(email, '@') + 1) AS dominio
FROM clientes
LIMIT 3;| usuario | dominio | |
|---|---|---|
| maria.garcia@email.com | maria.garcia | email.com |
| carlos.rodriguez@email.com | carlos.rodriguez | email.com |
| laura.lopez@email.com | laura.lopez | email.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ística | INSTR | LOCATE |
|---|---|---|
| Orden de argumentos | INSTR(cadena, buscar) | LOCATE(buscar, cadena) |
| Posición inicial | No soporta | Tercer argumento opcional |
| Funcionalidad | Básica | Permite buscar desde posición N |
En el siguiente artículo veremos LOCATE, que ofrece más flexibilidad.
Escrito por Eduardo Lázaro
