Filtrar campo diferente de nulo em SQL

Firebird

30/10/2003

Tentei realizar uma consulta SQL filtrando um determinado campo char de tamanho 1 para exibir registros diferentes de ´U´, mas nada é exibido:

select * from tabela where campo<>´U´

Este campo, em sua grande maioria, possui registros nulos, apenas alguns registros possuem o caractere ´U´, mas nada é retornado na consulta.

Posso facilmente resolver isto filtrando os registros como nulos:

select * from tabela where campo is null

Mas, gostaria de entender porque isto acontece para que não cometa erros no código de alguma aplicação.

Utilizo o Firebird 1.5.

Se alguém puder me explicar, obrigado.

Alexandre.


Alexandre7

Alexandre7

Curtidas 0

Respostas

Marcos Fernando

Marcos Fernando

30/10/2003

vc manda selecionar os campos <> ´U´ como vc só utiliza u como informaçoes null é nulo,,,, então não está no paramentro <> ´U´...

para ele encontrar não deixe a campo nulo, acresente um ´A´ ai sim,,pois o campo não será mais nulos,,,,,,sua consulta está certa como is null


GOSTEI 0
Alexandre7

Alexandre7

30/10/2003

Entendi, Marcos.

Mas, uma vez que null é diferente de ´U´, a consulta não deveria exibir os registros com o campo nulo mesmo assim?

Isso irá ocorrer em qualquer tipo de campo (data, valor, texto), tanto no Firebird como no Interbase? Será que esta regra é comum para outros bancos de dados?

Questiono apenas para aprender mais.

Valeu.


GOSTEI 0
Afarias

Afarias

30/10/2003

|Mas, uma vez que null é diferente de ´U´, a consulta não deveria exibir
|os registros com o campo nulo mesmo assim?

NULL não é diferente de ´U´ e nem é igual a ´U´ -- NULL não é valor, é apenas um estado como ´desconhecido´


|Isso irá ocorrer em qualquer tipo de campo (data, valor, texto), tanto no
|Firebird como no Interbase? Será que esta regra é comum para outros
|bancos de dados?

Todos os bancos de dados (segundo as normas SQL ANSI 92)


Vc pode ter seu SQL na forma::

select * from tabela where campo is NULL or campo<>´U´


T+


GOSTEI 0
Alexandre7

Alexandre7

30/10/2003

Obrigado pelas informações, Marcos e Farias.


GOSTEI 0
POSTAR