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

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

创建临时表如下:

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

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

DB2查询结果表拼接JSON字符串_第1张图片

拼接SQL如下:

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

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

        JOSN拼接成功。

DB2查询结果表拼接JSON字符串_第2张图片

 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)), '""')

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