我正在使用json_agg
函数从PostgreSQL请求返回一个JSON数组。但是,如果没有找到行,json_agg
将返回一个空字符串而不是空的JSON数组[]
(如果我理解json.org,则必须使用方括号。)
例如:
SELECT json_agg(t.*) FROM (SELECT 'test' AS mycol WHERE 1 = 2) AS t ;
返回一个空字符串,而带有'1 = 1'的相同命令返回一个有效的JSON数组(使用PostgreSQL 9.5测试)。
有什么想法吗?
答案 0 :(得分:11)
json_agg
从空集返回null:
select json_agg(t.*) is null
from (select 'test' as mycol where 1 = 2) t ;
?column?
----------
t
如果你想要一个空的json数组coalesce
:
select coalesce(json_agg(t.*), '[]'::json)
from (select 'test' as mycol where 1 = 2) t ;
coalesce
----------
[]