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
ouIS NOT NULL
naWHERE
cláusula.Você pode inserir valores nulos em uma coluna declarando
NULL
explicitamente em umaINSERT
instrução orUPDATE
ou deixando uma coluna fora de umaINSERT
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 |