O que é NULL?
NULL representa a ausência de valor: "desconhecido" ou "não se aplica".
Não é zero nem uma string vazia. Qualquer operação aritmética com NULL
resulta em NULL (preco + 10 é NULL se preco for NULL).
Lógica de três valores
No SQL uma condição pode ser verdadeira, falsa ou desconhecida. Como
NULL é "desconhecido", comparar com ele nunca dá verdadeiro:
SELECT * FROM produtos WHERE preco = NULL; -- ❌ não retorna nada
Mesmo que preco seja NULL, NULL = NULL é desconhecido, não
verdadeiro. Por isso existem operadores específicos:
SELECT * FROM produtos WHERE preco IS NULL; -- preços desconhecidos
SELECT * FROM produtos WHERE preco IS NOT NULL; -- preços conhecidos
Funções para tratar NULL
COALESCE(a, b, c, ...)retorna o primeiro argumento que não for NULL. Ideal para fornecer um valor padrão:SELECT nome, COALESCE(preco, 0) AS preco_final FROM produtos;IFNULL(a, b)é a versão de dois argumentos doCOALESCE: seaforNULL, retornab.NULLIF(a, b)faz o oposto: retornaNULLsea = b, eacaso contrário. Útil para "transformar em NULL" um valor sentinela (por exemplo, tratar um0como "sem dado") ou para evitar divisões por zero:SELECT total / NULLIF(unidades, 0) AS preco_medio FROM vendas;
Exemplos
Substituir NULL por 0 com COALESCE
SELECT nome, COALESCE(preco, 0) AS preco_final
FROM produtos
ORDER BY id;