[{"id" : null, "name" : null, "tag_id" : null}]
但我想在没有找到任何东西时显示一个空数组并删除所有null值我可以做什么?
SELECT
l.id,
JSON_AGG(JSON_BUILD_OBJECT('id', la.id, 'name', la.name, 'lag_id', la.lag_id)) as attr_groups
FROM location l
LEFT JOIN location_attr_groups lag
ON lag.id = l.l_attr_group_id
LEFT JOIN location_attr la
ON la.lag_id = lag.id
我尝试了JSON_STRIP_NULLS,但它显示了此
[{}]
这不是一个空的阵列
jsonb
而不是
json
。然后您可以写:jsonb_agg(NULLIF(jsonb_strip_nulls(jsonb_build_object(...)), '{}'))
NULLIF
不适用于
json
,因为该类型没有平等运算符。