Thread: case not sensitive to null condition ?

case not sensitive to null condition ?

From
"Gauthier, Dave"
Date:

v9.0.1 on linux

 

thedb=# select

  ''''||bicolumn||'''',

  coalesce(permitted_values,'is_null'),

  case permitted_values when NULL then 'null' else ''''||permitted_values||'''' end

   from bi_constraints limit 2;

 

    ?column?    |   coalesce    |      case

----------------+---------------+-----------------

'block'        | is_null       |                  <--- should be 'null' ??

'design_style' | rls,analog,fc | 'rls,analog,fc'

(2 rows)

 

Why didn't the case return 'null' in the statement above?

 

Thanks in Advance !

 

Re: case not sensitive to null condition ?

From
Tom Lane
Date:
"Gauthier, Dave" <dave.gauthier@intel.com> writes:
> thedb=# select
>   ''''||bicolumn||'''',
>   coalesce(permitted_values,'is_null'),
>   case permitted_values when NULL then 'null' else ''''||permitted_values||'''' end
>    from bi_constraints limit 2;

That's equivalent to "case when permitted_values = NULL then ..." which
doesn't work, because = never succeeds on nulls.  You need to write
something like "case when permitted_values IS NULL then ...".

            regards, tom lane