当 TIMESTAMP 列的值为 NULL 时,如何使用 COALESCE to return 'N/A'?

How do I use COALESCE to return 'N/A' when the value of a TIMESTAMP column is NULL?

是否可以使用 COALESCE(或任何其他方式)将 TIMESTAMP 列中的 NULL 值替换为类似 'N/A' 的字符串?

在我的 SELECT 声明中,我有一个

CASE WHEN n.expiration_date::date IS NULL THEN 'N/A' ELSE n.expiration_date::date END

当我尝试这个时,我得到了这个错误,这是有道理的:

invalid input syntax for type date: "N/A"

我也发现了 this blog post 这个问题。有解决办法吗?

CASE 表达式的所有值都必须计算为相同的数据类型。

如果确实需要N/A,需要将日期转换为字符类型:

CASE 
    WHEN n.expiration_date IS NULL THEN 'N/A' 
    ELSE n.expiration_date::date::text 
END

或者如果您想控制格式:

CASE 
    WHEN n.expiration_date IS NULL THEN 'N/A' 
    ELSE to_char(n.expiration_date, 'YYYY-MM-DD')
END