正在尝试在Oracle 12.1中更新JSON列。是否有可用于更新JSON的json函数。我添加了一个约束JSON_COLUMN是JSON。
我已经尝试过:
UPDATE tablename SET JSON =
json_mergepatch(JSON, '{"STRUCTURE_NAME":null}');
但是此功能仅适用于19c
This "STRUCTURE_NAME": "ABC:STATE:L12345", needs to be updated with "STRUCTURE_NAME":null
答案 0 :(得分:1)
-19c之前的版本,如果要更改JSON文档中的任何值,则必须替换整个内容:
create table t (
doc varchar2(100)
check ( doc is json )
);
insert into t values ('{
"changeMe" : "to null",
"leaveMe" : "alone"
}');
update t
set doc = '{
"changeMe" : null,
"leaveMe" : "alone"
}';
select * from t;
DOC
{
"changeMe" : null,
"leaveMe" : "alone"
}
请注意,当您使用19 {c}并使用json_mergepatch
时,将属性设置为null
会将其从文档中删除:
update t
set doc = json_mergepatch (
doc,
'{
"changeMe" : null
}');
select * from t;
DOC
{"leaveMe":"alone"}