19

我想选择一个日期(我的列是时间戳类型)。但是当列中的日期为 NULL 时,我想返回一个空字符串。这个怎么做?我写了这个:

SELECT
   CASE WHEN to_char(last_post, 'MM-DD-YYYY HH24:MI:SS') IS NULL THEN ''
      ELSE to_char(last_post, 'MM-DD-YYYY HH24:MI:SS') AS last_post END
   to_char(last_post, 'MM-DD-YYYY HH24:MI:SS') AS last_post, content
FROM topic;

但它向我显示了一些错误,不知道为什么:

ERROR:  syntax error at or near "as"
LINE 1: ...ELSE to_char(last_post, 'MM-DD-YYYY HH24:MI:SS') AS last_po...
                                                            ^
4

3 回答 3

26

使用该COALESCE()函数是最好的方法,因为它只是在 NULL 的情况下交换一个替代值。可读性也大大提高。:)

SELECT COALESCE(to_char(last_post, 'MM-DD-YYYY HH24:MI:SS'), '') AS last_post, content FROM topic;
于 2013-04-13T16:56:57.703 回答
3

你把你AS的情况下?

尝试:

SELECT
   CASE WHEN last_post IS NULL THEN ''
     ELSE to_char(last_post, 'MM-DD-YYYY HH24:MI:SS') END AS last_post,
   content
FROM topic;

我还没有尝试过查询。

于 2013-04-13T16:56:40.850 回答
3
select coalesce(to_char(last_post, 'MM-DD-YYYY HH24:MI:SS'), '') as last_post, content
from topic;
于 2013-04-13T16:57:10.343 回答