【发布时间】:2014-06-04 19:51:03
【问题描述】:
我正在使用 Postgres 9.2 生成一些 JSON 数据。对于每个嵌套表,我都在做这组嵌套函数:
SELECT array_to_json(
coalesce(
array_agg(
row_to_json(foo)),
ARRAY[]::json[])
)
FROM foo
效果是创建一个json数组,每一行都是该行的json集合。如果表为空,则合并确保我得到一个空数组而不是 nil。在大多数情况下, foo 实际上是一个子查询,但我认为这与问题无关。
我想创建一个函数table_to_json_array(expression),这样就和上面的效果一样:
SELECT table_to_json_array(foo) FROM foo
我需要使用这个批次,所以我打算创建一个 Postgres 函数来组合这些调用来清理我的查询。查看文档似乎我需要创建一个聚合而不是一个函数来获取表参数,但那些看起来我需要自己重新实现 array_agg。
我是否遗漏了什么(可能只是函数需要采用的类型)?有什么建议吗?
【问题讨论】:
标签: json function postgresql aggregate plpgsql