如果行不存在,如何从pgsql中的查询返回'0'?

dio*_*ess 6 postgresql

如果行不存在,如何从pgsql中的查询返回'0'?喜欢

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

Rom*_*kar 13

我不完全理解你想得到什么结果,但如果你想从表格中的某些行获取值,如果没有行存在,则尝试0,尝试:

select coalesce((select field from table limit 1), 0)
Run Code Online (Sandbox Code Playgroud)

如果你有一些表的过滤条件可以返回1行或没有,请尝试此查询:

select coalesce((select field from table where <your condition>), 0)
Run Code Online (Sandbox Code Playgroud)


Mag*_*der 8

SELECT CASE WHEN EXISTS (SELECT 1 FROM table WHERE xxx) THEN 1 ELSE 0 END
Run Code Online (Sandbox Code Playgroud)

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

SELECT CASE WHEN field IS NULL THEN 0 ELSE 1 END FROM table
Run Code Online (Sandbox Code Playgroud)

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