Im Allgemeinen ist eine Alternative zu case when ...ist coalesce(nullif(x,bad_value),y)(die nicht im OP Fall verwendet werden können). Zum Beispiel,
select coalesce(nullif(y,''),x), coalesce(nullif(x,''),y), *
from ( (select 'abc' as x, '' as y)
union all (select 'def' as x, 'ghi' as y)
union all (select '' as x, 'jkl' as y)
union all (select null as x, 'mno' as y)
union all (select 'pqr' as x, null as y)
) q
gibt:
coalesce | coalesce | x | y
abc | abc | abc |
ghi | def | def | ghi
jkl | jkl | | jkl
mno | mno | | mno
pqr | pqr | pqr |
(5 rows)