为什么PostgreSQL json_agg()函数不返回空数组?

pda*_*gog 6 postgresql json

我正在使用该json_agg函数从PostgreSQL请求返回一个JSON数组.但是,当没有找到行时,json_agg返回一个空字符串而不是一个空的JSON数组[](如果我理解json.org,则必须使用方括号).

例如:

SELECT json_agg(t.*) FROM (SELECT 'test' AS mycol WHERE 1 = 2) AS t ;
Run Code Online (Sandbox Code Playgroud)

返回一个空字符串,而带有'1 = 1'的相同命令返回一个有效的JSON数组(使用PostgreSQL 9.5测试).

任何的想法?

Clo*_*eto 12

json_agg 从空集返回null:

select json_agg(t.*) is null
from (select 'test' as mycol where 1 = 2) t ;
 ?column? 
----------
 t
Run Code Online (Sandbox Code Playgroud)

如果你想要一个空的json数组coalesce:

select coalesce(json_agg(t.*), '[]'::json)
from (select 'test' as mycol where 1 = 2) t ;
 coalesce 
----------
 []
Run Code Online (Sandbox Code Playgroud)