我有一个包含多个字段的表(id,title,json_field)。我想从这个表中选择所有行,但我希望json_field中的每个参数都是结果中的一个单独的行。我想我应该使用json_array_elements
,但问题是我无法理解如何将其包含在我的查询中。
有解决方案吗?我希望它能与这个查询一起使用:
select id, title, json_array_elements(json_field) from table_name
,但它没有。
我也尝试将子查询结果作为参数传递,但也没有成功。
我仔细阅读了文档(http://www.postgresql.org/docs/9.3/static/functions-json.html),但我找不到任何有用的信息。
非常感谢您的帮助!
答案 0 :(得分:1)
为我工作
select 1, 2, json_array_elements('[1,true, [2,false]]');
?column? | ?column? | json_array_elements
----------+----------+---------------------
1 | 2 | 1
1 | 2 | true
1 | 2 | [2,false]
也适用于表格
select id, title, json_array_elements(j) as j
from (values
(1, 'the title', '[1,true, [2,false]]'::json)
) s(id, title, j);
id | title | j
----+-----------+-----------
1 | the title | 1
1 | the title | true
1 | the title | [2,false]
答案 1 :(得分:1)
我尝试将json_array_elements()
函数应用于VARCHAR和TEXT字段,但它不起作用:
提示:没有函数匹配给定的名称和参数类型。您 可能需要添加显式类型转换。
但是,它似乎可以正常使用JSON类型。见SqlFiddle: http://sqlfiddle.com/#!15/2977f/3
所以你需要做的就是将你的字段转换为JSON数据类型: http://sqlfiddle.com/#!15/0fa19/1