postgresql 多行转成一个json对象

数据格式

record_idquestion_nameanswer_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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值