【发布时间】:2014-05-22 16:42:06
【问题描述】:
所以,目前我在一个表中有两列,其中一列包含一个 JSON 文档,如下所示:
CID:
2
Name:
{"first" : "bob","1" : "william", "2" : "archebuster", "last" : "smith"}
当我使用以下方法搜索此列时:
SELECT "CID", "Name"->>(json_object_keys("Name")) AS name FROM "Clients" WHERE
"Name"->>'first' LIKE 'bob' GROUP BY "CID";
我明白了:
CID | name
--------------
2 | bob
2 | william
2 | archebuster
2 | smith
当我真的想要时:
CID | name
2 | bob william archebuster smith
我该怎么做呢?我是 postgresql 中 JSON 的新手。 我已经尝试过 string_agg 并且它不起作用,大概是因为我在 json 列中工作,尽管事实上 '->>' 应该将结果类型设置为字符串
更新:
【问题讨论】:
-
不确定试试
array_agg("Name"->>(json_object_keys("Name"))) AS name -
对于数组 agg 我得到“在不能接受集合的上下文中调用的集合值函数”。对于字符串 agg 我得到“错误:string_agg(text) 不存在”
-
在临时表中插入这些值并在其上使用 array_agg。
-
不完全确定如何做到这一点,一直在尝试将事物转换为数组,但遇到了同样的问题,其中每一行都是 {bob} {william} 等
标签: sql json postgresql postgresql-json