达梦数据库获取判断字段中的json数据中的值,设置修改json中的值
达梦数据库获取判断字段中的json数据中的值
-- 版本支持情况: -- DM7.1.6及之前版本:不支持原生JSON类型,只能用VARCHAR/CLOB存储 -- DM7.6及以后版本:开始支持JSON相关功能 -- DM8.0及以后版本:完整支持JSON数据类型和丰富的JSON函数 SELECT *, -- 获取json中的值 JSON_VALUE(JSON_INFO , '$.jys.status') AS test, -- 获取json中的json JSON_QUERY(JSON_INFO , '$.jys.data') AS test1, -- 获取嵌套json中的值 JSON_VALUE(JSON_INFO , '$.jys.data.name') AS test2, -- 获取嵌套json中数组中的值 JSON_VALUE(JSON_INFO , '$.jys.data[0].name') AS test3 FROM B_TABLE where -- 条件判断json中的值是否等于 haha JSON_VALUE(JSON_INFO , '$.jys.data.name')= 'haha'; -- 路径表达式示例 $.basic -- 第一层对象 $.basic.age -- 嵌套属性 $.basic.address.province -- 多层嵌套 $.skills[0] -- 数组第一个元素 $.projects[0].name -- 数组对象的属性 $.projects[*].name -- 所有项目名称(部分版本支持)
设置修改json中的值
-- 修改json字段中的日期脚本 -- 查询 SELECT * FROM BH_BUSINESS.B_FORM_DATA WHERE REVIEW_PROJECT_ID IN (1984467941741084736) AND FORM_KEY = 'fm:proces_form2:node3'; -- 修改 UPDATE BH_BUSINESS.B_FORM_DATA SET FORM_VALUE = JSON_SET(FORM_VALUE , '$.drawDate2', '2013-07-23') WHERE REVIEW_PROJECT_ID IN (1984467941741084736) AND FORM_KEY = 'fm:proces_form2:node3';
修改前后数据对比:

还可以同时修改多个属性
UPDATE BH_BUSINESS.B_FORM_DATA SET FORM_DATA = JSON_SET(FORM_DATA, '$.drawDate2', '2019-01-15', '$.reviewer', 'Alice', '$.amount', CAST(123.45 AS NUMBER(10, 2))) WHERE JSON_VALUE(FORM_DATA, '$.formId') = 'fm:proces_form2:node3';

浙公网安备 33010602011771号