Weirdness with =?
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
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/
Show quoted text
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.
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