Partilhar via


NULL e UNKNOWN (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System) Ponto de extremidade de análise do SQL Warehouse no Microsoft Fabric

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

Os valores nulos geralmente indicam dados desconhecidos, não aplicáveis ou a serem adicionados posteriormente. Por exemplo, a inicial do meio de um cliente pode não ser conhecida no momento em que o cliente faz um pedido.

Considere:

  • Para testar valores nulos em uma consulta, use IS NULL ou IS NOT NULL na WHERE cláusula.

  • Você pode inserir valores nulos em uma coluna declarando NULL explicitamente em uma INSERT instrução or UPDATE ou deixando uma coluna fora de uma INSERT instrução.

  • Valores nulos não podem ser usados como informações necessárias para distinguir uma linha em uma tabela de outra linha em uma tabela. Os exemplos incluem chaves primárias ou informações usadas para distribuir linhas, como chaves de distribuição.

Comentários

Quando valores nulos estão presentes nos dados, os operadores lógicos e de comparação podem potencialmente retornar um terceiro resultado de em vez de UNKNOWN apenas TRUE ou FALSE. Essa necessidade de lógica com valor três é uma fonte de muitos erros de aplicativo. Operadores lógicos em uma expressão booleana que inclui UNKNOWN return UNKNOWN, a menos que o resultado do operador não dependa da UNKNOWN expressão. Estas tabelas fornecem exemplos desse comportamento.

A tabela a seguir mostra os resultados da aplicação de um AND operador a duas expressões booleanas em que uma expressão retorna UNKNOWN.

Expressão 1 Expressão 2 Resultado
TRUE UNKNOWN UNKNOWN
UNKNOWN UNKNOWN UNKNOWN
FALSE UNKNOWN FALSE

A tabela a seguir mostra os resultados da aplicação de um OR operador a duas expressões booleanas em que uma expressão retorna UNKNOWN.

Expressão 1 Expressão 2 Resultado
TRUE UNKNOWN TRUE
UNKNOWN UNKNOWN UNKNOWN
FALSE UNKNOWN UNKNOWN