我想选择一个日期(我的列是时间戳类型)。但是当列中的是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...
^
答案 0 :(得分:21)
使用COALESCE()
函数是最好的方法,因为它只是在NULL的情况下交换替换值。可读性也大大提高。 :)
SELECT COALESCE(to_char(last_post, 'MM-DD-YYYY HH24:MI:SS'), '') AS last_post, content FROM topic;
答案 1 :(得分: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;
我还没有尝试过查询。
答案 2 :(得分:3)
select coalesce(to_char(last_post, 'MM-DD-YYYY HH24:MI:SS'), '') as last_post, content
from topic;