IN, BETWEEN, LIKE e ILIKE
BásicoIN (…) compara contra una lista de valores. BETWEEN a AND b es un rango que incluye los dos extremos. LIKE busca un patrón de texto: % reemplaza cualquier cantidad de caracteres y _ exactamente uno. ILIKE hace lo mismo sin distinguir mayúsculas de minúsculas.
Sintaxis
WHERE columna IN ('a', 'b', 'c')
AND numero BETWEEN 10 AND 20 -- incluye 10 y 20
AND texto LIKE 'Inicio%' -- empieza con «Inicio»
AND texto ILIKE '%medio%' -- contiene «medio», sin importar mayúsculasEjemplo
SELECT
s.id,
s.store_name,
s.country,
s.rating
FROM sellers AS s
WHERE s.country IN ('PE', 'UY', 'CL')
AND s.store_name LIKE 'Bazar%'
AND s.rating BETWEEN 4.5 AND 5
ORDER BY s.rating DESC, s.id;Resultado
| id | store_name | country | rating |
|---|---|---|---|
| 93 | Bazar Sur 93 | PE | 4.75 |
| 3 | Bazar Urbano 3 | PE | 4.67 |
| 40 | Bazar Express 40 | CL | 4.51 |
Cómo leerlo
Las tres condiciones se cumplen a la vez: país dentro de la lista, nombre que empieza con «Bazar» y calificación entre 4.5 y 5, ambos incluidos. Un vendedor con calificación exactamente 4.5 también aparecería. LIKE distingue mayúsculas: con LIKE 'bazar%' el resultado queda vacío, mientras que ILIKE 'bazar%' encuentra los 20 vendedores cuyo nombre empieza con «Bazar».
Error común
Así no
SELECT count(*)
FROM orders AS o
WHERE o.currency = 'ARS'
AND o.created_at BETWEEN '2025-08-01' AND '2025-08-31';Usar BETWEEN con fechas sobre una columna con hora (timestamptz, fecha y hora con zona horaria). '2025-08-31' significa el 31 a las 00:00, así que se pierde casi todo el último día: esta consulta cuenta 349 pedidos y agosto tiene 361. Para fechas con hora, usa un rango semiabierto: >= '2025-08-01' AND < '2025-09-01'.
En otros motores: PostgreSQL, Snowflake, MySQL, SQL Server
PostgreSQLSnowflake
Tienen
ILIKE. Los demás motores no lo tienen; la forma que funciona en todos eslower(columna) LIKE 'bazar%'.MySQLSQL Server
Que
LIKEdistinga o no mayúsculas depende de la intercalación (collation, la regla de comparación de texto) de la columna. Con la configuración habitual no las distingue, al revés que PostgreSQL.
Estos fragmentos no se ejecutan en el curso: se muestran como referencia de cada motor.