Controverso, polêmico, misterioso. Vamos falar sobre ele, aquele que
não deve ser mencionado… precisamos falar sobre NULL
.
Quando se trata de recuperar os registros de uma tabela, um método bastante comum é fazer isso filtrando registros, deixando de fora aqueles que não nos interessam e retornando apenas aqueles que serão úteis para nós (pelo menos deveria ser assim). Para que o banco saiba se um registro é de nosso iteresse ou não ele precisa ter certeza entre o que buscamos e o que está armazenado e para que o banco tenha essa certeza o dado precisa estar disponível.
É onde chegamos ao NULL
, que para um banco de dados pode significar
“desconhecido” ou “não se aplica” e é por isso que comparações
envolvendo NULL
não podem retornar verdade, sendo assim:
1 > NULL
implica emNULL
1 = NULL
implica emNULL
NULL = NULL
implica emNULL
- e por ai vai…
Mas porque não retorna false
ou true
? Pois bem, retornar true
ou
false
implicaria em ter certeza qual o valor de NULL
, neste caso
ele deixaria de ser desconhecido certo? É isto, 1 = NULL
é NULL
porque não da para saber se o valor desconhecido é 1
ou não.
Estas e outras “curiosidadades” estou compilando numa apresentação que espero ter a chance de apresentá-la em alguns eventos este ano.
ATUALIZADO: Esta e outras curiosidades foram compiladas em uma palestra apresentada no PGBR2015.