如果该行不存在,我如何从 pgsql 中的查询返回“0”?
Posted
技术标签:
【中文标题】如果该行不存在,我如何从 pgsql 中的查询返回“0”?【英文标题】:How can i return '0' from query in pgsql, if the row doesn't exist? 【发布时间】:2013-08-19 08:20:29 【问题描述】:如果行不存在,我如何从 pgsql 中的查询返回“0”? 喜欢
SELECT IF EXISTS(field) THEN field ELSE 0 FROM table
【问题讨论】:
【参考方案1】:我不完全明白你想要得到什么结果,但是如果你想从表中某行的字段中获取值,如果没有行则为 0,尝试:
select coalesce((select field from table limit 1), 0)
如果您有一些可能返回 1 行或什么都不返回的表的过滤条件,请尝试以下查询:
select coalesce((select field from table where <your condition>), 0)
【讨论】:
实际上,我的第二个变体与 Magnus Hagander 的变体有点不同。在我的解决方案中,你会从表格中获得价值,而在他的解决方案中,你会得到 1 或 0,不知道你想得到哪个。 我当然会得到字段值而不是'0')我没有看到它 那么答案对你有用吗?【参考方案2】: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' 字符串,只需在返回值周围加上单引号。
【讨论】:
以上是关于如果该行不存在,我如何从 pgsql 中的查询返回“0”?的主要内容,如果未能解决你的问题,请参考以下文章
PHP如何读取MYSQL数据库的字段内容然后返回该行所有内容?