Por que `WHERE coluna = NULL` não funciona
Pergunta
Em SQL, por que `WHERE coluna = NULL` nunca retorna linhas, e qual é a forma certa de filtrar por ausência de valor?
Resposta esperada
NULL representa 'valor desconhecido', e qualquer comparação com NULL usando `=`, `<>`, `<`, `>` resulta em UNKNOWN (nem verdadeiro nem falso) — e o WHERE só devolve linhas onde a condição é verdadeira, então `= NULL` filtra tudo. A forma certa é `IS NULL` / `IS NOT NULL`, que são operadores próprios pra testar ausência. Isso também afeta `NOT IN` com uma subconsulta que contém NULL (pode zerar o resultado inteiro) e agregações (`COUNT(coluna)` ignora NULLs, `COUNT(*)` não). A função `COALESCE(coluna, valor_padrao)` serve pra tratar o NULL antes de comparar.
Por que perguntam isso
Pergunta júnior clássica. Reprova quem insiste em `= NULL`. Bônus: saber que `NOT IN (subquery com NULL)` zera o resultado.