內我有一個匹配表以下數據: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)。 –