27 noviembre 2006

SQL: SELECT, parte 6 - ¿Estás IN o solo te encuentras entre muchos? ¿O acaso no existes?

Otros operadores del WHERE que pueden ser muy útiles son el IN, el BETWEEN y los que tienen que ver con el NULL, los cuales sirven para ver si un valor dado se encuentra en un conjunto de opciones, entre dos valores o sin valor respectivamente. ¿Cómo funcionan? Vamos primero a hablar sobre el IN.

Creo que se entiende mejor con ejemplos, así que hay va uno. Quiero obtener el nombre de todas las compañías de mi tabla Proveedores que sean de Japón, Italia, Francia y Timbuktú. Esta consulta quedaría así:

SELECT Nombre,Pais
FROM Proveedores
WHERE Pais IN ('Japón','Italia','Francia','Timbuktú')


Bien, hasta aquí podemos buscar registros que tienen un campo que tiene valores que pertenecen a cierto conjunto, especificado después de la palabra IN en la cláusula WHERE.

Algo muy similar sucede con la palabra BETWEEN. Este sirve para obtener los registros que tienen un campo que se encuentra en un rango dado. Por ejemplo, si quiero ver todos los platillos de mi tabla Menu que cuestan entre $50 y $150, escribiría la siguiente instrucción SQL:

SELECT Platillo,Precio
FROM Menu
WHERE Precio BETWEEN 50 AND 150


¿Pero qué sucede si estoy buscando los registros que carecen de un valor? A lo mejor el usuario no capturó uno o varios campos y quiero saber cuáles son (no necesariamente tiene que ser un error, a lo mejor el programa está diseñado para dejar valores por defáult o lo usan para indicar otros procesos, etc.). Para esto me sirven las opciones IS NULL e IS NOT NULL. Nota: los únicos campos de una tabla que no pueden dejarse en blanco son los que componen la llave primaria.

Supongamos que ando actualizando mi base de datos de alumnos para completar sus datos personales. Particularmente quiero ver todos los alumnos que no tienen teléfono dado de alta. Para saber quienes son, escribo la siguiente instrucción:

SELECT Nombre,ApellidoP,ApellidoM
FROM Alumnos
WHERE Tel IS NULL


También puedo poner el NOT en la instrucción para obtener todo lo contrario. Es poco usado, pero es posible poner NOT NULL en lugar del puro NULL.

En fin, por ahi lo dejo hoy. Estoy a sus órdenes si no comprendieron algo. ¡Saludos!
Publicar un comentario
Related Posts Plugin for WordPress, Blogger...