Oracle - 使用新元素更新json数组(如果尚不存在)

时间:2018-03-27 21:03:48

标签: arrays json oracle

我有一个Oracle / Json问题......我希望有人可以提供帮助。

我刚刚发现了Oracle的JSON_TABLE功能,我正在探索如何使用它来存储,更新和恢复Json数据。

我可以查询JSON数组,现在我想用值更新数组。

上下文

我有一个json数组(它代表“一年中的一天”列表),如下所示:

create table tmp_json (
  id         number(10) not null,
  data       clob,
  constraint pk_tmp_json primary key (id),
  constraint check_data_json check (data is json)
);

INSERT INTO tmp_json (id, data)
VALUES (3,
        '{
           "doy" : [ 7, 8, 9 ]
         }'
);

我可以用

之类的东西查询数组
select tmp_json.id,
       jt.*
from   tmp_json,
       json_table(data, '$'
         columns (
           nested path '$.doy[*]' columns (
             "doy" path '$' null on error
           )
         )
       ) "JT";

ID DOY
-- ---
 3 7
 3 8
 3 9

太棒了......

问题1

我想在数组中添加一个项目,如果我们是一年中的第10天,请说“10”,这样说:

select to_number(to_char(to_date('10-01-2018'),'DDD')) doy from dual;

10

如何使用上面的“10”轻松更新存储的json

问题2

只有在JSON数组中不存在“10”时,我才能这样做?

我已经感谢任何需要花些时间看这个的人了!

谢谢! 大卫

0 个答案:

没有答案