Share via


NULL e UNKNOWN (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)Ponto de extremidade de SQL no Microsoft FabricWarehouse 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 NULL é desconhecido.

Os valores nulos geralmente indicam dados desconhecidos, não aplicáveis ou a serem 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.

Observe o seguinte sobre os valores nulos:

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

  • Os valores nulos podem ser inseridos em uma coluna declarando explicitamente NULL em uma instrução INSERT ou UPDATE ou retirando uma coluna de uma instrução INSERT.

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

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. Os operadores lógicos em uma expressão booliana que incluírem UNKNOWNs retornarão UNKNOWN, a menos que o resultado do operador não dependa da expressão UNKNOWN. Estas tabelas fornecem exemplos desse comportamento.

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

Expressão 1 Expressão 2 Result
TRUE DESCONHECIDO DESCONHECIDO
DESCONHECIDO DESCONHECIDO DESCONHECIDO
FALSE DESCONHECIDO FALSE

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

Expressão 1 Expressão 2 Result
TRUE DESCONHECIDO TRUE
DESCONHECIDO DESCONHECIDO DESCONHECIDO
FALSE DESCONHECIDO DESCONHECIDO

Consulte Também

AND (Transact-SQL)
OR (Transact-SQL)
NOT (Transact-SQL)
IS NULL (Transact-SQL)