Как обновить столбец JSON в Oracle 12.1 - PullRequest
1 голос
/ 26 сентября 2019

Пытаюсь обновить столбец JSON в oracle 12.1.Есть ли какая-либо функция 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

1 Ответ

1 голос
/ 26 сентября 2019

До 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"
}  

Обратите внимание, что когда вы переходите к 19c и используете json_mergepatch, настройкаатрибут null удаляет его из документа:

update t
set    doc = json_mergepatch ( 
  doc, 
  '{
    "changeMe" : null
  }');

select * from t;

DOC                   
{"leaveMe":"alone"}   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...