达梦数据库获取判断字段中的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';

  修改前后数据对比:

04671e73-3bd5-4478-96f8-3be83d31d6dc

   还可以同时修改多个属性

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';

  

posted @ 2025-10-23 18:22  东峰叵,com  阅读(60)  评论(0)    收藏  举报