Postgres 9.1 を使用しています。次のクエリは期待どおりに機能しません。合体は最初の非 null 値を返す必要があります。ただし、このクエリは日付 (2) ではなく null (1?) を返します。
select COALESCE(
TO_DATE('','yyyymmdd'), --(1)
TO_DATE('20130201','yyyymmdd') --(2)
);
--(1) this evaluates independently to null
--(2) this evaluates independently to the date,
-- and therefore is the first non-null value
私は何を間違っていますか?回避策はありますか?
編集:これは、Coalesce とはまったく関係がない可能性があります。Case When コンストラクトを使っていくつかの実験を試みました。結局のところ、Postgres にはこの大きな醜いバグがあり、それを選択すると null が返されるにもかかわらず、not nullとして扱わTO_DATE('','yyyymmdd')
れます。
[ PS:誤解を招くことを避けるため、上に取り消し線を引いてください。Postgres にはバグはありませんが、空の文字列を null として扱いません。回答を参照してください。]