Re: What's wrong with this query?

Поиск
Список
Период
Сортировка
От Thomas Kellerer
Тема Re: What's wrong with this query?
Дата
Msg-id h1mcnl$dtv$1@ger.gmane.org
обсуждение исходный текст
Ответ на What's wrong with this query?  (Mike Christensen <mike@kitchenpc.com>)
Ответы Re: What's wrong with this query?  (Steve Atkins <steve@blighty.com>)
Re: What's wrong with this query?  (Martin Gainty <mgainty@hotmail.com>)
Re: What's wrong with this query?  ("Albe Laurenz" <laurenz.albe@wien.gv.at>)
Список pgsql-general
Mike Christensen wrote on 22.06.2009 00:10:
> I just tracked down a bug in my software due to an "unexpected" behavior
> in Postgres..  Can someone clarify why this doesn't work (I haven't
> tried it on MSSQL or anything else, so I'm not sure if this is the
> official SQL standard or anything)..
>
> CREATE TABLE test
> (
>   value uuid
> );
>
> INSERT INTO test VALUES ('00000000-0000-0000-0000-000000000000');
> INSERT INTO test VALUES ('11111111-1111-1111-1111-111111111111');
> INSERT INTO test VALUES (null);
>
> select * from test where value != '00000000-0000-0000-0000-000000000000';
>
> What I expect to get is two rows: the
> '11111111-1111-1111-1111-111111111111' row and the null row, as both
> those values are in fact not '00000000-0000-0000-0000-000000000000'.
> However, I only get the first one.
>
That is standard behaviour.
A comparison with a NULL value always returns false (and that is not a Postgres
speciality).

You need to use

select *
from test
where value != '00000000-0000-0000-0000-000000000000'
or value is null;

Thomas

В списке pgsql-general по дате отправления:

Предыдущее
От: Mike Christensen
Дата:
Сообщение: What's wrong with this query?
Следующее
От: Steve Atkins
Дата:
Сообщение: Re: What's wrong with this query?