Thread

  1. Weirdness with =?

    Christopher Kings-Lynne <chriskl@familyhealth.com.au> — 2006-01-30T08:44:21Z

    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
    
    
    
    
  2. Re: Weirdness with

    Martijn van Oosterhout <kleptog@svana.org> — 2006-01-30T09:30:18Z

    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.
    
  3. Re: Weirdness with =?

    Tom Lane <tgl@sss.pgh.pa.us> — 2006-01-30T15:00:20Z

    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