Ir al contenido
wannacode

IN, BETWEEN y LIKE

En resumen: IN comprueba si un valor está en una lista, BETWEEN si está entre dos límites, y LIKE compara una parte de un texto con un patrón con % y _.

Problema

Tres ciudades, tres OR

La empresa de mensajería del noreste y de la costa reparte en Varna, Burgas y Ruse. Necesitas los clientes de esas ciudades:

SQLbase de datos: tienda

Funciona, pero con diez ciudades la condición se vuelve una línea de OR en la que es fácil olvidar una.

La idea

IN: una de la lista

IN comprueba si un valor está en una lista:

SQLbase de datos: tienda

El mismo resultado, y la lista se lee de un vistazo. NOT IN es lo contrario: todo menos lo que está en la lista.

La idea

BETWEEN: entre dos límites

BETWEEN a AND b significa «de a a b», incluidos a y b:

SQLbase de datos: tienda

Las fechas están en la base como texto, por ejemplo 2026-03-31. Ese texto se ordena como se ordenan las fechas, así que BETWEEN también sirve para ellas. Los pedidos del primer trimestre de 2026:

SQLbase de datos: tienda
Más precisamente, para curiosos

Si la fecha también lleva hora (2026-03-31 18:20), BETWEEN '2026-01-01' AND '2026-03-31' se deja el 31 de marzo después de medianoche, porque '2026-03-31 18:20' va después de '2026-03-31'. Entonces es más seguro escribir ordered_at >= '2026-01-01' AND ordered_at < '2026-04-01'.

Pruébalo

Los pedidos abiertos

Muestra el número, la fecha y el estado de los pedidos que no están ni entregados (delivered) ni cancelados (cancelled).

SQLbase de datos: tienda

La idea

LIKE: por una parte del texto

LIKE compara con un patrón. En el patrón, % significa «cualquier texto, incluso ninguno» y _ significa «exactamente un carácter».

SQLbase de datos: tienda

'%pan%' encuentra todo nombre que tenga «pan» en alguna parte. 'pan%' buscaría nombres que empiecen por «pan», y '%pan' los que terminen así.

Míralo

Mayúsculas y minúsculas

Busquemos «PAN BLANCO» y «TÉ DE MENTA», los dos en mayúsculas. Ejecuta:

SQLbase de datos: tienda

«Pan blanco» sale, aunque está guardado con una sola mayúscula. «Té de menta» no sale. En SQLite LIKE ignora las mayúsculas, pero solo en las letras de la A a la Z. En las letras acentuadas, una É mayúscula y su é minúscula son dos caracteres distintos: en las páginas en español de este curso, una búsqueda con «TÉ» en mayúsculas no encuentra «Té de menta». Lo mismo vale para Á, Í, Ó, Ú y Ñ.

Más precisamente, para curiosos

Las bases se diferencian aquí. En PostgreSQL LIKE siempre distingue mayúsculas y minúsculas, e ILIKE no las distingue, en cualquier alfabeto. En MySQL depende del ajuste de comparación de texto (collation), y normalmente se ignoran las mayúsculas. Si una búsqueda debe funcionar en todos los alfabetos, SQLite necesita una extensión (ICU), o guardas una columna aparte con el texto en minúsculas.

Pruébalo

La leche

Muestra el nombre y el precio de los productos que tienen «leche» en el nombre.

SQLbase de datos: tienda

Ejercicio

Dos tareas

1. Los pedidos del verano de 2026 (junio, julio, agosto): número, cliente y fecha.

Los pedidos entre el 1 de junio y el 31 de agosto de 2026:

SQLbase de datos: tienda

2. Los clientes cuyo nombre empieza por «M»: nombre y ciudad.

Los clientes cuyo nombre empieza por «M»:

SQLbase de datos: tienda

Test

Ponte a prueba

1. ¿Qué precios incluye price BETWEEN 2 AND 3?
2. ¿Qué encuentra name LIKE '%café%'?
3. En SQLite, ¿LIKE 'café%' encuentra «Café en grano»?
4. ¿Cómo se escribe «la fecha está en octubre de 2026» para ordered_at?

Creado por Ivo Gergov como parte de la campaña de Evo Tech por una educación accesible en programación ·