我有一个像这样的表员工
name value
'e1' 'rahul'
'e2' 'priya'
'e3' 'abhijit'
我需要从两列中提取json,结果就像这样
{'e1':'rahul','e2':'priya','e3':'abhijit'}
我尝试了以下查询,结果如下
select row_to_json((name,value)) from employee
O/P
{'f1':'e1','f2':'rahul'}
{'f2':'e1','f2':'priya'}
{'f3':'e1','f2':'abhijit'}
我不希望那里的f1和f2名称,请咨询!
答案 0 :(得分:3)
感谢输入人员,但我发现我必须将postgresql从9.3升级到9.4 以获得函数 json_build_object 。来完成工作对查询结构的一些更改。
select json_agg(json_build_object(name,value)) from employee;
[{'e1':'rahul','e2':'priya','e3':'abhijit'}]
答案 1 :(得分:2)
SELECT ROW_TO_JSON(a) FROM (SELECT name, value FROM employee) a;
答案 2 :(得分:1)
如果我正确地提出了您的问题,那么,如上所述[{3}},在postgres 9.4+中,您可以使用json_build_object
:
create temp table employee as (select 'key'::text as name, 'val'::text as value);
select json_build_object(name,value) from employee;
结果如下:
json_build_object
-------------------
{"key" : "val"}