Oracle中使用SQL更新CLOB字段内JSON数据的技术问询
处理Oracle 12.2中CLOB字段的JSON更新
嘿,针对你在Oracle 12.2里修改CLOB中JSON内容的需求,我给你整理了两种场景的具体SQL写法,都是用Oracle原生的JSON函数实现,简单高效:
1. 向JSON添加新键值对 perm_bigboss: 1
可以用JSON_MERGEPATCH函数,它能把新的JSON片段合并到原有JSON结构中——不存在的键会直接添加,已存在的键会覆盖值(这里我们是加新键,刚好适用)。假设你的表名为your_table,CLOB字段是json_clob_column,用来定位行的主键是id,SQL语句如下:
UPDATE your_table SET json_clob_column = JSON_MERGEPATCH(json_clob_column, '{"perm_bigboss": 1}') WHERE id = <目标行ID>; -- 如果要批量更新所有行,去掉WHERE条件即可
小提示:如果你的CLOB字段没有加
IS JSON约束,建议在WHERE里加上AND json_clob_column IS JSON,避免处理无效JSON导致报错。
2. 将已有键 perm_admin 的值设为0
这种修改已有键值的场景,用JSON_SET函数更直接,它可以精准定位到指定路径的键并修改其值。SQL语句如下:
UPDATE your_table SET json_clob_column = JSON_SET(json_clob_column, '$.perm_admin', 0) WHERE id = <目标行ID>; -- 批量更新同理去掉WHERE
JSON_SET的逻辑是:JSON_SET(目标JSON, JSON路径, 新值),这里的$.perm_admin是标准JSON路径表达式,用来定位到perm_admin这个键。如果这个键原本不存在,JSON_SET也会自动添加它(不过你是要修改已有值,所以不用担心这个情况)。
内容的提问来源于stack exchange,提问作者Mockminister
相关产品推荐
相关产品推荐

