Aprende SQL · lección gratuita
LIKE permite buscar texto por patrones en lugar de coincidencias exactas. Usa dos comodines: % representa cualquier secuencia de caracteres (incluida la vacía) y _ representa exactamente un carácter. Es la herramienta básica para búsquedas tipo "empieza por", "contiene" o "termina en", como las que hay detrás de un buscador.
%: cualquier número de caracteres (0 o más). 'CRM%' = empieza por "CRM"._: exactamente un carácter. '_a%' = la segunda letra es "a".%. '%Cloud%' = contiene "Cloud".NOT LIKE: niega el patrón (todo lo que NO encaja).LIKE es insensible a mayúsculas/minúsculas para letras ASCII ('crm%' y 'CRM%' son equivalentes).La posición del % define el tipo de búsqueda:
'CRM%' → empieza por "CRM".'%Corp' → termina en "Corp".'%Cloud%' → contiene "Cloud" en cualquier posición.'_a%' → primer carácter cualquiera, segundo carácter "a", luego lo que sea.'ERP_%' → empieza por "ERP" seguido de al menos un carácter más.El _ es un comodín de un solo carácter obligatorio: 'A_' coincide con cadenas de exactamente dos caracteres que empiezan por "A", mientras que 'A%' coincide con cualquier cadena que empiece por "A".
Si necesitas buscar el carácter % o _ como texto literal (no como comodín), define un carácter de escape con ESCAPE. Por ejemplo, ... WHERE nombre LIKE '%100\%%' ESCAPE '\' busca el texto literal "100%": aquí \% significa "un signo de porcentaje literal", mientras que los % sin escapar siguen siendo comodines.
SELECT empresa, pais FROM clientes WHERE empresa LIKE '%Tech%'
-- Empieza por: productos cuyo nombre arranca con "CRM"
SELECT nombre, precio FROM productos
WHERE nombre LIKE 'CRM%'
ORDER BY nombre;
-- Contiene: productos con "Cloud" en cualquier parte del nombre
SELECT nombre FROM productos
WHERE nombre LIKE '%Cloud%'
ORDER BY nombre;
-- Termina en: empresas cuyo nombre acaba en "Corp" o "Plus"
SELECT empresa FROM clientes
WHERE empresa LIKE '%Corp' OR empresa LIKE '%Plus'
ORDER BY empresa;
-- Comodín de un carácter: empleados cuya segunda letra del nombre es "a"
SELECT nombre FROM empleados
WHERE nombre LIKE '_a%'
ORDER BY nombre;
-- NOT LIKE: cargos que no mencionan "Ventas"
SELECT DISTINCT cargo FROM empleados
WHERE cargo NOT LIKE '%Ventas%'
ORDER BY cargo;
💡LIKE '%texto%'no puede usar índices y recorre toda la tabla; en tablas grandes puede ser lento. Para "empieza por" ('texto%') sí se aprovecha el índice. Para búsqueda de texto seria, considera FTS (full-text search).
| Patrón | Coincide con |
|---|---|
'abc%' | Empieza por "abc" |
'%abc' | Termina en "abc" |
'%abc%' | Contiene "abc" |
'a_c' | "a", un carácter cualquiera, "c" (3 letras) |
col NOT LIKE 'x%' | NO empieza por "x" |
LIKE '%50\%%' ESCAPE '\' | Busca el % literal |
---
← Rangos y listas: BETWEEN e INLógica condicional: CASE y manejo de NULL →