【发布时间】:2021-12-27 11:24:49
【问题描述】:
我有一个包含 JSON 的 CLOB 列,我想使用 json_mergepatch 更新 JSON 的值。如果该列为 NULL,则 json_mergepatch 不起作用,所以在这种情况下,我只想添加给定的新 JSON。
我必须使用 CLOB 来避免这个问题:Oracle Update - JSON Merge Patch with more than 4000 characters
这有效并更新了列:
UPDATE my_table SET data =
json_mergepatch(data, '{ "user": "Tony" }' RETURNING CLOB)
where id = '1';
这给了ORA-00932: inconsistent datatypes: expected CHAR got CLOB:
UPDATE my_table SET data =
case
when (data is NULL) then '{ "user": "Tony" }'
else json_mergepatch(data, '{ "user": "Tony" }' RETURNING CLOB)
end
where id = '1';
为什么它不适用于case?我该如何解决?
【问题讨论】:
标签: sql json oracle clob oracle19c