devterview_$ iniciar simulação

Por que `WHERE coluna = NULL` não funciona

FácilJúniorConsultas

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.

#null#where#is-null#fundamentos
publicidade

Perguntas de acompanhamento

Relacionadas