valores nulos não são retornados, a menos que especificado - Oracle SQL

0

Ao tentar executar uma instrução select que simplesmente exclui alguns dados, os valores nulos também são erroneamente (?) Excluídos.

Usando a tabela a:

ID         NAME
1          Foo
2          Bar
3          (null)

A seguinte declaração:

select * from a where NAME<>'Foo'

está retornando o seguinte:

ID         NAME
2          Bar

Por que o ID 3 não é retornado como resultado desta declaração? Para incluir o registro com o valor nulo, devo alterar minha instrução select para

select * from a where (NAME<>'Foo' or NAME is null)
raiz
fonte

Respostas:

1

É assim que o SQL funciona. (NULL <> 'Foo')retorna NULL, que falha no condicional. Se você deseja incluir essa linha, precisa OR NAME IS NULLou considere armazenar uma sequência vazia em vez de NULL, se apropriado para o seu caso de uso.

http://dba.fyicenter.com/faq/sql_server_2/What_Are_NULL_Values.html possui mais informações sobre valores NULL e operadores booleanos.

ChrisInEdmonton
fonte