Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

SQL não exibindo valores nulos em uma consulta diferente?


Em várias linguagens NULL é tratado de forma diferente:A maioria das pessoas conhece a lógica de dois valores onde true e false são os únicos valores comparáveis ​​em expressões booleanas (mesmo é falso é definido como 0 e verdadeiro como qualquer outra coisa).

No SQL padrão você tem que pensar na lógica de três valores. NULL não é tratado como um valor real, você pode chamá-lo de "desconhecido". Portanto, se o valor for desconhecido, não está claro se no seu caso state é 0, 1, ou qualquer outra coisa. Então NULL != 1 resultados para NULL novamente.

Isso conclui que onde quer que você filtre algo que possa ser NULL, você terá que tratar os valores NULL por conta própria. Observe que a sintaxe também é diferente:valores NULL só podem ser comparados com x IS NULL em vez de x = NULL . Veja Wikipedia para uma tabela verdade mostrando os resultados das operações lógicas.