From: | Steve Atkins <steve(at)blighty(dot)com> |
---|---|
To: | pgsql-general List <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: What's wrong with this query? |
Date: | 2009-06-21 22:42:30 |
Message-ID: | 9B56B4DB-13CB-4072-9C72-555D44AF5EEA@blighty.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Jun 21, 2009, at 3:37 PM, Thomas Kellerer wrote:
> 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;
Yup.
Or where value is distinct from '00000000-0000-0000-0000-000000000000';
Cheers,
Steve
From | Date | Subject | |
---|---|---|---|
Next Message | Craig Ringer | 2009-06-21 23:26:56 | Re: cursors, temp tables, dynamic sql technique (was and is: looping over a small record set over and over in a function) |
Previous Message | Thomas Kellerer | 2009-06-21 22:37:41 | Re: What's wrong with this query? |