Valores nulos

Um valor NULL indica que o valor é desconhecido. Um valor NULL é diferente de um valor vazio ou zero. Dois valores nulos não são iguais. Comparações entre dois valores nulos, ou entre um NULL e qualquer outro valor, retornam unknown porque o valor de cada NULL é desconhecido.

Valores nulos geralmente indicam dados desconhecidos, não aplicáveis, ou que os dados serão adicionados posteriormente. Por exemplo, é possível que a inicial do segundo nome de um cliente não seja conhecida no momento em que o cliente faz um pedido.

As informações seguintes são sobre nulls:

  • Testar para obter valores null em uma consulta, use IS NULL ou IS NOT NULL na cláusula WHERE.

  • Quando são exibidos resultados de consulta no editor de códigos do SQL Server Management Studio, são mostrados valores nulos como NULL no conjunto de resultados.

  • Podem ser inseridos valores nulos em uma coluna declarando explicitamente NULL em uma instrução INSERT ou UPDATE, omitindo uma coluna de uma instrução INSERT, ou adicionando uma nova coluna a uma tabela existente usando a instrução ALTER TABLE.

  • Não podem ser usados valores nulos para obter informações necessárias para distinguir uma linha em uma tabela de outra linha em uma tabela, como chaves primárias.

No código de programa, você pode verificar valores nulos de forma que certos cálculos sejam executados apenas em linhas com dados válidos, ou não NULL. Por exemplo, um relatório pode imprimir a coluna de previdência social somente se houver dados que não tenham NULL na coluna. Remover valores nulos quando você está executando cálculos pode ser importante, porque certos cálculos, como uma média, poderão ser inexatos se as colunas NULL forem incluídas.

Se for provável que valores nulos sejam armazenados em seus dados e você não queira que eles apareçam em seus dados, é necessário criar consultas e instruções de modificação de dados que removam NULLS ou os transformem em outro valor.

Observação importanteImportante

Para minimizar manutenção e possíveis efeitos em consultas ou relatórios existentes, você deve minimizar o uso de valores nulos. Planeje suas consultas e instruções de modificação de dados de forma que valores nulos tenham efeito mínimo.

Quando valores nulos estão presentes em dados, os operadores lógicos e de comparação podem potencialmente retornar um terceiro resultado UNKNOWN em vez de somente TRUE ou FALSE. Essa necessidade de lógica com valor três é uma fonte de muitos erros de aplicativo. Essas tabelas esboçam o efeito de introduzir comparações nulas.

A tabela seguinte mostra os resultados de se aplicar um operador AND a dois operandos Booleanos.

AND

TRUE

UNKNOWN

FALSE

TRUE

TRUE

UNKNOWN

FALSE

UNKNOWN

UNKNOWN

UNKNOWN

FALSE

FALSE

FALSE

FALSE

FALSE

A tabela seguinte mostra os resultados de se aplicar um operador OR a dois operandos Booleanos.

OR

TRUE

UNKNOWN

FALSE

TRUE

TRUE

TRUE

TRUE

UNKNOWN

TRUE

UNKNOWN

UNKNOWN

FALSE

TRUE

UNKNOWN

FALSE

A tabela seguinte mostra como o operador NOT nega ou reverte o resultado de um operador Booleano.

Expressão Booleana para a qual o operador NOT é aplicado

Avalia para

TRUE

FALSE

UNKNOWN

UNKNOWN

FALSE

TRUE

O padrão ISO usa as palavras-chaves IS NULL e IS NOT NULL para testar a presença de valores nulos.

Expressão Booleana para a qual o operador IS NULL

é aplicado

Avalia para

Expressão Booleana para a qual o operador IS NOT NULL é aplicado

Avalia para

TRUE

FALSE

TRUE

TRUE

NULL

TRUE

NULL

FALSE

FALSE

FALSE

FALSE

TRUE

Transact-SQL também oferece uma extensão para processamento nulo. Se a opção ANSI_NULLS for definida como OFF, as comparações entre nulos, como NULL = NULL, serão avaliadas como TRUE. Comparações entre o NULL e qualquer valor de dados são avaliados como FALSE.