SQL ofrece un rico conjunto de condiciones de búsqueda que permiten especificar muchos tipos diferentes de consultas eficaz y naturalmente. Las condiciones de búsqueda son cinco según el estándar ANSI/ISO:
Comparación
Compara el valor de una expresión con el valor de otra.
Es la más utilizada. En esta consulta, SQL calcula y compara los valores de dos expresiones SQL por cada fila de datos. Las expresiones pueden ser tan simples como un nombre de columna o una constante, o pueden ser expresiones aritméticas más complejas. SQL ofrece seis modos de comparar dos expresiones (=, <>, <, <=, >, >=).
SELECT Nombre,Apellidos,Cargo FROM Neptuno.Empleados WHERE FechaNacimiento<'1960/01/01';
SELECT NombreProducto,UnidadesEnExistencia FROM Neptuno.Productos WHERE UnidadesEnExistencia>=120;
Rango
Examina si el valor de una expresión cae dentro de un rango especificado de valores.
SQL proporciona una forma diferente de condición de búsqueda con el test de rango (BETWEEN). El test de rango comprueba si el valor del dato se encuentre entre dos valores especificados o no (NOT BETWEEN).
SELECT Nombre,Apellidos,FechaContratacion FROM Neptuno.Empleados WHERE FechaContratacion BETWEEN '1990/01/01' AND '2000/01/01';
SELECT NombreProducto,UnidadesEnExistencia FROM Neptuno.Productos WHERE UnidadesEnExistencia BETWEEN 50 AND 75;
SELECT NombreProducto,UnidadesEnExistencia FROM Neptuno.Productos WHERE UnidadesEnExistencia NOT BETWEEN 20 AND 120;
Pertenencia a conjunto
Comprueba si el valor de una expresión se corresponde con uno de un conjunto de valores.
Examina si un valor de dato coincide con uno de una lista de valores objetivo mediante la sentencia IN. Veamos varios ejemplos:
SELECT NombreCompañia,Ciudad FROM Neptuno.Clientes WHERE Ciudad IN ("Berlin","Madrid","Marsella");
SELECT NombreProducto,UnidadesEnPedido FROM Neptuno.Productos where UnidadesEnPedido IN (10,20,50);
Correspondencia con patrón
Comprueba si el valor de una columna que contiene datos de cadena de caracteres se corresponde a un patrón especificado.
Se puede utilizar un test de comparación simple para recuperar las filas en donde el contenido de una columna de texto se corresponde con un cierto texto particular. Sin embargo, uno puede olvidar fácilmente el nombre exacto de la empresa. El test de correspondencia con patrón (LIKE) comprueba si el valor de dato de una columna se ajusta a un patrón especificado. El patrón es una cadena que puede incluir uno o más caracteres comodines. Estos caracteres comodines son el signo de porcentaje (%) y el subrayado (_). El carácter comodín signo de porcentaje (%) se corresponde con cualquier secuencia de cero o más caracteres. El carácter comodín subrayado (_) se corresponde con cualquier carácter simple.
Observa la diferencia entre estas consultas:
SELECT NombreCompañia,NombreContacto,Telefono FROM Neptuno.Clientes WHERE Ciudad="Berna"
SELECT NombreCompañia,NombreContacto,Telefono,Ciudad FROM Neptuno.Clientes WHERE Ciudad LIKE "Ber%"
SELECT NombreCompañia,NombreContacto,Telefono,Ciudad FROM Neptuno.Clientes WHERE Ciudad LIKE "Ber%n%"
SELECT NombreProducto,UnidadesEnPedido FROM Neptuno.Productos WHERE NombreProducto LIKE "%c_r__";
SELECT NombreProducto,UnidadesEnPedido FROM Neptuno.Productos WHERE NombreProducto LIKE "%c_r%";
Valor nulo
Comprueba si una columna tiene un valor NULL (desconocido).
En algunas ocasiones es útil comprobar explícitamente los valores NULL en una condición de búsqueda y manejarlos directamente. SQL proporciona un test especial de valor nulo (IS NULL) para tratar este caso. La forma negada del test de valor nulo (IS NOT NULL) encuentra las filas que no contienen un valor NULL.
Por ejemplo, la consulta siguiente utiliza el test de valor nulo para hallar las compañías que no tienen fax:
SELECT NombreCompañia, Telefono, Fax FROM Neptuno.Clientes WHERE Fax IS NULL;
SELECT NombreCompañia, Telefono, Fax FROM Neptuno.Clientes WHERE Fax IS NOT NULL;