Operadores de comparación y lógicos: construir condiciones precisas
Una condición puede ser sintácticamente válida y aun así seleccionar filas distintas a las que imaginamos. Los operadores de comparación evalúan valores; AND, OR y NOT permiten combinar o negar esas evaluaciones.
La claridad importa especialmente cuando una condición mezcla varias reglas de negocio.
Operadores principales
| Operador | Significado |
|---|---|
= |
Igual a |
<> o != |
Distinto de |
> y < |
Mayor que y menor que |
>= y <= |
Mayor o igual y menor o igual |
AND |
Todas las condiciones deben cumplirse |
OR |
Al menos una condición debe cumplirse |
NOT |
Niega una condición |
Ejemplo: combinar requisitos
Queremos productos activos con existencia y precio de hasta 800 pesos:
SELECT
p.IdProducto,
p.Nombre,
p.Precio,
p.Existencia
FROM dbo.Producto AS p
WHERE p.Activo = 1
AND p.Existencia > 0
AND p.Precio <= 800
ORDER BY p.Precio;
Cada fila debe cumplir las tres expresiones porque están unidas mediante AND.
Agrupar condiciones con paréntesis
AND se evalúa antes que OR. Si queremos productos activos que pertenezcan a una de dos categorías, hacemos explícita la agrupación:
SELECT
p.IdProducto,
p.Nombre,
p.IdCategoria,
p.Activo
FROM dbo.Producto AS p
WHERE p.Activo = 1
AND
(
p.IdCategoria = 1
OR p.IdCategoria = 2
);
Sin los paréntesis, la segunda categoría podría aceptarse aunque el producto no estuviera activo. Es preferible expresar visualmente la intención en lugar de confiar en que el lector recuerde la precedencia.
Utilizar NOT
SELECT
p.IdPedido,
p.Estado
FROM dbo.Pedido AS p
WHERE NOT (p.Estado = 'Cancelado');
En este caso, p.Estado <> 'Cancelado' sería más directo. NOT resulta útil para negar condiciones compuestas, EXISTS, IN, BETWEEN o LIKE, siempre que la forma final siga siendo fácil de leer.
Las comparaciones con NULL
Una comparación como Correo = NULL no devuelve verdadero. Para comprobar ausencia utilizamos:
WHERE Correo IS NULL;
Y para exigir un valor existente:
WHERE Correo IS NOT NULL;
La lógica con nulos admite un resultado desconocido, además de verdadero y falso. Esa tercera posibilidad puede cambiar el efecto de una negación o de una expresión compuesta.
Qué conviene comprobar
Revisamos los límites exactos: > no incluye el valor comparado, mientras que >= sí. También comprobamos tipos y conversiones implícitas, especialmente entre números, fechas y textos.
Cuando una condición combina AND y OR, los paréntesis deberían hacer evidente la regla incluso antes de ejecutar la consulta. Una pequeña tabla de casos también puede confirmar qué combinaciones esperamos aceptar.
Relacionado con
WHERE: utiliza estas expresiones para filtrar filas.CASE: evalúa condiciones y produce un valor.IF: decide qué bloque de instrucciones ejecutar.EXISTS: convierte la presencia de filas en una condición.