我正在使用 Postgres 9.1。以下查询无法按预期工作。合并应该返回第一个非空值。但是,此查询返回 null (1?) 而不是日期 (2)。
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 有一个丑陋的大错误,它认为TO_DATE('','yyyymmdd')
它不是 null,即使选择它返回 null 也是如此。
[ PS:以上删除线,以免误导。Postgres 没有错误,但不会将空字符串视为 null。见答案。]