DB2查询结果表拼接JSON字符串

        在oracle和mysql中可以直接使用对应的函数将查询结果转化为JSON字符串,但是在DB2中没有找到对应的函数。在这里使用listagg函数,将查询表结果直接转化为JSON字符串。

创建临时表如下:

create table temp.student(
    stu_name varchar(20),
    xb varchar(10),
    age int,
    crt_date date
);

插入部分数据后,查询结果表如下:

拼接SQL如下:

select '[' ||
       listagg(cast('{"CRT_DATE":"' || CRT_DATE || '' ||
                    '","STU_NAME":"' || STU_NAME ||
                    '","XB":"' || XB ||
                    '","AGE":' || AGE ||
                    '}' as varchar(10000)), ',') || ']'
from temp.student;

 查询结果通过在线JSON解析结果如下:

        JOSN拼接成功。

 PS:需要注意的点:

1.如果拼接的结果超过4000个字符,会报下面的错误,所以需要通过cast将结果转化一下。 

[54006][-137] The length resulting from "LISTAGG" is greater than "4000".. SQLCODE=-137, SQLSTATE=54006, DRIVER=4.26.14

转化方法:

LISTAGG(CAST('要拼接的字段或字符串' AS VARCHAR(10000)), ',')

2.拼接的字段中如果有空值,需要对空值进行处理,转化为“”字符串

nvl(char(round(task, 2)), '""')

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值