Páginas

sexta-feira, 24 de agosto de 2012

SQL e Valores NULL

Bancos de dados permitem o uso de um valor especial: o NULL, mas seu uso deve obedecer a alguns pequenos detalhes que podem causar um grande impacto no seu software.

NULL é um valor único

No contexto de banco de dados, NULL é a falta de informação ou valor. Isto posto, deve-se observar que NULL não pode ser comparado com nada, nem mesmo com NULL. Mas então, como verificar colunas com NULL?
Para trabalhar com NULL nós temos as comparações "IS NULL" ou "IS NOT NULL", e somente esta forma é aceita em comparações com NULL.
Exemplificando, caso você possua uma tabela com uma coluna onde é permitido atribuir NULL e você monta seu SQL filtrando tudo que seja diferente a um valor qualquer:
SELECT * FROM TABELA WHERE COLUNA <> 'valor';
Você irá observar que as linhas em que a coluna é NULL não serão retornadas, por que NULL não é diferente de nada nem igual a nada, então, caso você precise que sua consulta retorne as linhas em que a coluna é NULL use:
SELECT * FROM TABELA WHERE COLUNA <> 'valor' OR COLUNA IS NULL;
Reforçando então, nenhuma destas comparações irá funcionar:
1 = null, 'texto' like null, 23 > null, -15 <= null
Outra forma de entender esta regra é analisar que, qualquer operação de comparação com NULL retornará como resultado NULL.

Ordenação

Quando realizando ordenações em colunas que podem possuir NULL, lembre que NULL é a falta de informação, e como tal, não pode ser comparado aos valores existentes nas demais linhas. Por padrão os bancos de dados trarão resultados NULL por primeiro em ordenações ascendentes e por último em ordenações descendentes.

Nenhum comentário:

Postar um comentário

Olá! Antes de postar seu comentário, por favor, observe que comentários técnicos, elogios e sugestões são antecipadamente agradecidos, esclarecimentos sobre os conceitos envolvidos na postagem serão respondidos da melhor forma possível, mas pedidos de ajuda técnica ou suporte individual deverão ser feitos através do formulário de contato. Grato!