在实际应用中,我们经常要用到把查询的结果导出来Json中,在Sql中有很简单的实现方式,请阅读我之前的文章:
但是在达梦中,没有直接生成的,便是也提供了许多这样的函数,可以参考JSON | 达梦技术文档JSON(JavaScript Object Notation)是完全独立于语言的文本格式,是一种轻量级的数据交换格式。 JSONB(JavaScript Object Notation Binary)与 JSON 基本类似,区别在于 JSON 将数据保存为文本格式,而 JSONB 将数据保存为二进制格式。 DM 数据库支持对 JSON 数据进行存储和查询。在 DM 数据库中 JSON 数据以字https://eco.dameng.com/document/dm/zh-cn/pm/json.html#18-2-9-jsonb-object-agg
通过里面的 JSONB_AGG与 JSONB_BUILD_OBJECT 函数就可以实现上面的查询Json结果
select JSONB_AGG(val) from (
SELECT JSONB_BUILD_OBJECT('UserNo', UserNo, 'UserId', UserId, 'UserName',UserName) as val FROM KT_U_User where UserName Like '江%');
jsonb_build_object
jsonb_build_object 根据指定的“名称”和“值”创建 JSONB 对象。
语法格式
<jsonb_build_object函数> ::= jsonb_build_object(<exp1>, <exp2> {, <exp3>, <exp4>})
参数
<exp1>:指定“名称”,数据类型为 VARCHAR。
<exp2>:指定“值”,数据类型可以为任意类型。
返回值
JSONB 对象。
使用说明
支持指定多个“名称”和“值”,jsonb_build_object 参数的个数必须为偶数。
举例说明
例 根据表 KT_U_User中姓名中包含有 “二” 的各列数据创建 JSONB 对象。
SELECT JSONB_BUILD_OBJECT('UserNo', UserNo, 'UserId', UserId, 'UserName',UserName) as val FROM KT_U_User where UserName Like '%二%'
jsonb_agg
jsonb_agg 为集函数,将指定数据聚合成一个 JSONB 数组。
语法格式
<jsonb_agg函数> ::= jsonb_agg(<exp>)
参数
<exp>:指定数据,数据类型可以为任意类型。
返回值
JSONB 数组。
使用说明
支持在<exp> 参数前指定 DISTINCT 关键字,即 jsonb_agg(DISTINCT <exp>),表示对<exp> 进行去重操作。
举例说明
例 1 将表 KT_U_User 中姓名中包含有 “二” 的各列数据的 UserName 列数据聚合成一个 JSONB 数组。
select JSONB_AGG(UserName) FROM KT_U_User where UserName Like '%二%';
最后就是综合得出我们要想的数据了
select JSONB_AGG(val) from (
SELECT JSONB_BUILD_OBJECT('UserNo', UserNo, 'UserId', UserId, 'UserName',UserName) as val FROM KT_U_User where UserName Like '%二%'
);