Aprende SQL

Búsquedas avanzadas: BETWEEN, IN y LIKE

Además de los operadores de comparación básicos, SQL ofrece operadores avanzados que hacen las búsquedas mucho más expresivas y potentes.

BETWEEN
2010 2015
Rango de valores (incluidos)
IN
'Nintendo' 'Sony' 'Valve' 'Epic' 'Bungie'
Pertenece a la lista
LIKE
'The%'The Legend of Zelda
'%of%'God of War
'_alo'Halo
Búsqueda por patrón

BETWEEN: Rangos de valores

BETWEEN selecciona valores dentro de un rango (ambos extremos incluidos):

SELECT * FROM videogames
WHERE year BETWEEN 2010 AND 2015;

IN: Lista de valores

IN permite comprobar si un valor coincide con alguno de una lista:

SELECT * FROM videogames
WHERE developer IN ('Nintendo', 'Valve', 'Bungie');

LIKE: Búsqueda por patrones

LIKE permite buscar texto que coincida con un patrón. Los comodines disponibles son:

ComodínDescripciónEjemplo
%Cualquier secuencia de caracteres'The%'
_Un solo carácter'_inecraft'
SELECT * FROM videogames
WHERE title LIKE 'The%';

Ejemplos prácticos

Usaremos nuestra tabla videogames:

Nombre de la Tabla: videogames
idtitledeveloperyearplaytime_hours
1The Legend of ZeldaNintendo198620
2Super Mario Bros.Nintendo198510
3Final Fantasy VIISquare Enix199740
4The Witcher 3CD Projekt Red2015100
5MinecraftMojang Studios20119999
6Grand Theft Auto VRockstar Games201380
7Dark SoulsFromSoftware201160
8Portal 2Valve20118
9Red Dead Redemption 2Rockstar Games201870
10The Last of UsNaughty Dog201315
11Halo: Combat EvolvedBungie200110
12God of WarSanta Monica Studio201825

Buscar dentro de un rango

Juegos publicados entre 2010 y 2015:

SELECT title, year FROM videogames
WHERE year BETWEEN 2010 AND 2015;

Buscar en una lista

Juegos de desarrolladores específicos:

SELECT title, developer FROM videogames
WHERE developer IN ('Nintendo', 'Valve');

Negando búsquedas: NOT

Todos los operadores que acabas de aprender tienen su versión negada con NOT. Esto te permite excluir resultados en lugar de incluirlos.

NOT BETWEEN — Excluye un rango de valores:

SELECT * FROM videogames
WHERE year NOT BETWEEN 2010 AND 2015;

Devuelve los juegos publicados fuera del rango 2010–2015.

NOT IN — Excluye valores de una lista:

SELECT * FROM videogames
WHERE developer NOT IN ('Nintendo', 'Valve');

Devuelve todos los juegos cuyo desarrollador no sea Nintendo ni Valve.

NOT LIKE — Excluye un patrón de texto:

SELECT * FROM videogames
WHERE title NOT LIKE 'The%';

Devuelve los juegos cuyo título no empieza por “The”.

Dato sobre SQLite: En SQLite, LIKE es insensible a mayúsculas y minúsculas por defecto para caracteres ASCII. Esto significa que WHERE title LIKE 'the%' y WHERE title LIKE 'The%' devuelven los mismos resultados. Ten esto en cuenta si alguna vez migras tus consultas a otro motor de base de datos como PostgreSQL, donde LIKE sí distingue entre mayúsculas y minúsculas.

Ejercicios