¿Qué es NULL?
NULL representa la ausencia de valor: «desconocido» o «no aplica». No
es cero ni una cadena vacía. Cualquier operación aritmética con NULL da
NULL (precio + 10 es NULL si precio es NULL).
Lógica de tres valores
En SQL una condición puede ser verdadera, falsa o desconocida. Como
NULL es «desconocido», comparar con él nunca da verdadero:
SELECT * FROM productos WHERE precio = NULL; -- ❌ no devuelve nada
Aunque precio sea NULL, NULL = NULL es desconocido, no verdadero.
Por eso existen operadores específicos:
SELECT * FROM productos WHERE precio IS NULL; -- precios desconocidos
SELECT * FROM productos WHERE precio IS NOT NULL; -- precios conocidos
Funciones para gestionar NULL
COALESCE(a, b, c, ...)devuelve el primer argumento que no sea NULL. Ideal para dar un valor por defecto:SELECT nombre, COALESCE(precio, 0) AS precio_final FROM productos;IFNULL(a, b)es la versión de dos argumentos deCOALESCE: siaesNULL, devuelveb.NULLIF(a, b)hace lo contrario: devuelveNULLsia = b, yaen caso contrario. Útil para «convertir en NULL» un valor centinela (por ejemplo, tratar un0como «sin dato») o para evitar divisiones por cero:SELECT total / NULLIF(unidades, 0) AS precio_medio FROM ventas;
Ejemplos
Sustituir NULL por 0 con COALESCE
SELECT nombre, COALESCE(precio, 0) AS precio_final
FROM productos
ORDER BY id;