Thread: Weirdness with =?

Weirdness with =?

From
Christopher Kings-Lynne
Date:
I had this code in a script:

UPDATE food_foods SET included=true WHERE verification_status = 'I';
UPDATE food_foods SET included=false WHERE verification_status IS NULL;

I tried replacing it with:

UPDATE food_foods SET included=(verification_status = 'I');

However, that set included to true only where verification_status=I, it
didn't set false at all.

Why doesn't this work?

Chris




Re: Weirdness with

From
Martijn van Oosterhout
Date:
On Mon, Jan 30, 2006 at 04:44:21PM +0800, Christopher Kings-Lynne wrote:
> I had this code in a script:
>
> UPDATE food_foods SET included=true WHERE verification_status = 'I';
> UPDATE food_foods SET included=false WHERE verification_status IS NULL;
>
> I tried replacing it with:
>
> UPDATE food_foods SET included=(verification_status = 'I');

(NULL = 'I')   is null, not false. It will simply set rows where
verification_status is NULL to NULL also.

Perhaps you mean IS NOT DISTNCT FROM or something similar?

Have a nice day,
--
Martijn van Oosterhout   <kleptog@svana.org>   http://svana.org/kleptog/
> Patent. n. Genius is 5% inspiration and 95% perspiration. A patent is a
> tool for doing 5% of the work and then sitting around waiting for someone
> else to do the other 95% so you can sue them.

Re: Weirdness with =?

From
Tom Lane
Date:
Christopher Kings-Lynne <chriskl@familyhealth.com.au> writes:
> I tried replacing it with:
> UPDATE food_foods SET included=(verification_status = 'I');
> However, that set included to true only where verification_status=I, it
> didn't set false at all.

You'd have gotten NULL, not FALSE, at the rows where verification_status
is NULL.

You could try coalesce, or "(verification_status = 'I') IS TRUE", to
get something that returns false instead of null.

            regards, tom lane