postgresql 多行转成一个json对象

数据格式

record_id question_name answer_content
1 学校 211大学
1 学院 信息工程学院
1 年级 大三
1 班级 2
1 用户身份 学生

SQL

select concat('{',string_agg(strjson,','), '}' )::jsonb as strjson 
    from (SELECT concat('"',question_name,'":','"',
    REPLACE(question_value'"','\"'), '"')as strjson 
    FROM exam_answer_details where record_id='1' and answer_score is null)as A

查询结果:

{"学校": "211大学", "学院": "信息工程学院", "年级": "大三", "班级": "2", "用户身份": "学生"}

涉及函数说明:

REPLACE:字符串替换方法,这里替换"为\",避免与外层的"冲突,导致json解析失败

用法:REPLACE(字段名,'旧字符串','替换后的新字符串')

concat:字符串拼接,

用法:concat('字符串1','字符串2',...)

string_agg:聚合函数,用于连接字符串列表并在字符串之间放置分隔符。

用法:string_agg( 字段名, 分隔符)

参考链接:https://www.cnblogs.com/qukaige/p/15357100.html

你可能感兴趣的:(数据库,postgresql,json,数据库)