LIKE en MySQL: cómo buscar patrones
Aprende a usar LIKE en MySQL con los comodines % y _ para buscar textos que empiezan, terminan o contienen una cadena.
Actualizado el
LIKE en MySQL sirve para buscar texto que coincide con un patrón. Se usa normalmente dentro de WHERE; la estructura completa de la consulta se explica en SELECT en MySQL.
Sintaxis básica
SELECT columnas
FROM tabla
WHERE columna LIKE 'patron';Ejemplo:
SELECT *
FROM clientes
WHERE nombre LIKE 'A%';Esta consulta devuelve los clientes cuyo nombre empieza por A.
Comodines de LIKE
Los comodines más usados son:
| Comodín | Significado |
|---|---|
% | Cero o más caracteres. |
_ | Un único carácter. |
Ejemplos:
| Patrón | Resultado |
|---|---|
LIKE 'A%' | Empieza por A. |
LIKE '%a' | Termina por a. |
LIKE '%gmail%' | Contiene gmail. |
LIKE '_na' | Tiene tres caracteres y termina en na. |
LIKE 'A__%' | Empieza por A y tiene al menos tres caracteres. |
Buscar textos que empiezan por una letra
SELECT *
FROM clientes
WHERE nombre LIKE 'L%';Devuelve nombres como Luis o Laura.
Buscar textos que terminan por una cadena
SELECT *
FROM clientes
WHERE apellido LIKE '%ez';Devuelve apellidos como Pérez, López o Sánchez.
Buscar textos que contienen una cadena
SELECT *
FROM clientes
WHERE email LIKE '%hotmail%';Devuelve emails que contienen hotmail en cualquier posición.
Buscar por posición con _
SELECT *
FROM clientes
WHERE telefono LIKE '___5%';El patrón indica que el cuarto carácter debe ser 5.
Negar el patrón con NOT LIKE
NOT LIKE devuelve las filas que no coinciden con el patrón:
SELECT *
FROM clientes
WHERE email NOT LIKE '%@empresa.com';NULL NOT LIKE ... no resulta verdadero, así que las filas con NULL en esa columna quedan fuera del resultado. Para incluirlas, añade la comprobación explícita:
SELECT *
FROM clientes
WHERE email NOT LIKE '%@empresa.com'
OR email IS NULL;Buscar % o _ literales
Para buscar el carácter % o _ como texto literal, declara un carácter de escape con ESCAPE:
SELECT *
FROM productos
WHERE codigo LIKE '%!%%' ESCAPE '!';
SELECT *
FROM productos
WHERE codigo LIKE '%!_%' ESCAPE '!';Con ESCAPE '!', las secuencias !% y !_ representan los caracteres literales % y _, no los comodines.
Mayúsculas, minúsculas y acentos
La comparación de LIKE depende de la collation efectiva. Con la collation predeterminada moderna, utf8mb4_0900_ai_ci, la búsqueda no distingue mayúsculas de minúsculas ni acentos. No des por hecho que LIKE es siempre insensible a mayúsculas: si alguna de las expresiones usa una collation sensible, el resultado cambia.
Las collations terminadas en _ci no distinguen mayúsculas y las terminadas en _cs sí; _ai indica que no distinguen acentos y _as, que sí. Por ejemplo, en MySQL 8.0 o posterior:
SELECT 'abc' LIKE _utf8mb4 'ABC' COLLATE utf8mb4_0900_as_cs;Devuelve 0 porque esa collation distingue mayúsculas. El charset debe ser compatible y las collations disponibles dependen de la versión del servidor. utf8mb4_0900_as_cs es un ejemplo para utf8mb4, no una recomendación universal; puedes comprobar las disponibles con:
SHOW COLLATION WHERE Charset = 'utf8mb4';Rendimiento de LIKE
Un patrón constante que no empieza por comodín, como 'Ana%', puede aprovechar un índice B-tree. En cambio, LIKE '%texto' y LIKE '%texto%' no pueden usar ese índice para localizar el inicio del rango, por lo que suelen ser más lentos en tablas grandes.
Para evaluar estas búsquedas, consulta la guía de índices en MySQL.
Si necesitas buscar por términos en tablas grandes, MySQL ofrece los índices FULLTEXT como alternativa; no cubren todos los usos de LIKE.