11

如果该行不存在,我如何从 pgsql 中的查询返回“0”?像

SELECT IF EXISTS(field) THEN field ELSE 0 FROM table

4

2 回答 2

19

我不完全理解您想要获得什么结果,但是如果您想从表中某行的字段中获取值,如果没有行则为 0,请尝试:

select coalesce((select field from table limit 1), 0)

如果您有一些可能返回 1 行或什么都不返回的表的过滤条件,请尝试以下查询:

select coalesce((select field from table where <your condition>), 0)
于 2013-08-19T08:28:01.673 回答
8
SELECT CASE WHEN EXISTS (SELECT 1 FROM table WHERE xxx) THEN 1 ELSE 0 END

但是你的问题谈到存在于一个字段而不是一行。如果您只是与 NULL 进行比较,并考虑到“如果它存在”,那就是:

SELECT CASE WHEN field IS NULL THEN 0 ELSE 1 END FROM table

(当然,如果你真的想要 '0' 字符串,只需在返回值周围加上单引号。

于 2013-08-19T08:23:52.907 回答