内我有一个匹配表以下数据:Postgres的JSON查询列表
{"Id":1,"Teams":[{"Name":"TeamA","Players":[{"Name":"AAA"},{"Name":"BBB"}]},{"Name":"TeamB","Players":[{"Name":"CCC"},{"Name":"DDD"}]}],"TeamRank":[1,2]}
{"Id":2,"Teams":[{"Name":"TeamA","Players":[{"Name":"CCC"},{"Name":"BBB"}]},{"Name":"TeamB","Players":[{"Name":"AAA"},{"Name":"DDD"}]}],"TeamRank":[1,2]}
最后,我想获得的独特的团队名称的列表。
继This Question我一直在尝试使用下面的访问团队Name属性:
SELECT json_array_elements(match->>'Teams') FROM matches
这将返回
ERROR: function json_array_elements(text) does not exist
SQL state: 42883
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Character: 1560
我也试过json_array_elements(比赛 - >> '团队': :json)和json_array_elements(to_json(match - >>'Teams'))无济于事。
但下面的查询
SELECT match->>'Teams' FROM matches;
返回
"[{"Name":"TeamA","Players":[{"Name":"AAA"},{"Name":"BBB"}]},{"Name":"TeamB","Players":[{"Name":"CCC"},{"Name":"DDD"}]}]"
"[{"Name":"TeamA","Players":[{"Name":"CCC"},{"Name":"BBB"}]},{"Name":"TeamB","Players":[{"Name":"AAA"},{"Name":"DDD"}]}]"
哇,这么简单的修复。是否有任何理由使用文本版本? ( - >> over - >) – janderson
有时候你想要文本,有时候你想要更多的JSON,完全取决于你的用例。当涉及NULL时有一些不同的行为 - 这里是一个[demo](http://sqlfiddle.com/#!15/4ba26/3)。 –