pos*_*eat 5 coalesce postgresql-9.3
##问题##
我从此脚本(Postgresql 9.3.2)中收到错误(
在MS SQL Server中可以)
SELECT
CASE COALESCE(my_date_field,0)
WHEN 0 THEN 0
ELSE 1 END
AS status
FROM
my_table
Run Code Online (Sandbox Code Playgroud)
Error :COALESCE types timestamp without time zone and integer cannot be matched
Line 2 : CASE COALESCE(my_date_field,0)
## 解决了 ##
SELECT
CASE WHEN my_date_field IS NULL
THEN 0 ELSE 1 END
AS status
FROM
my_table
Run Code Online (Sandbox Code Playgroud)
COALESCE几乎接受任何数量的参数,但是它们应该是相同的data-type。
我引用了TSQL中的COALESCE函数
Cra*_*ger 11
零不是有效日期。令人惊讶的是它可以在 MS SQL 中工作。你需要使用一个合理的日期,或者接受NULL。
CASE COALESCE(my_date_field, DATE '0001-01-01')
Run Code Online (Sandbox Code Playgroud)
总体而言,该查询有点奇怪。这不是一种令人难以置信的冗长和复杂的写作方式IS NULL吗?
SELECT
my_date_field IS NULL AS status
FROM
my_table
Run Code Online (Sandbox Code Playgroud)
如果,每条评论,您想要 0 或 1,请使用:
SELECT
CASE WHEN my_date_field IS NULL THEN 1 ELSE 0 END AS status
FROM
my_table
Run Code Online (Sandbox Code Playgroud)