ЗАМЕНИТЕ ЗНАЧЕНИЕ НА JSON_ARRAY_T

#sql #json #oracle #plsql

Вопрос:

У меня есть массив, подобный:

 ["value_1", "value_2", "value_3"]
 

Я хочу заменить значение 2 на второй позиции значением 4 в той же позиции; используя JSON_ARRAY_T.

Результат должен быть:

 ["value_1", "value_4", "value_3"]
 

Есть ли какой-нибудь способ? или я должен снять и поставить?

Комментарии:

1. Пожалуйста, проясните свой вопрос. Вам нужно заменить второе значение в массиве, независимо от того, какое значение оно имеет, на «value_4»? Или вам нужно заменить значение «value_2» на «value_4», независимо от того, в какой позиции находится «value_2»?

2. Вы делаете два предположения, и оба они неверны. Отрицательный голос не от меня, и я прекрасно понимаю этот вопрос. Я не был в сети с тех пор, как задал вам свой вопрос; вы уже получили правильный ответ с другого плаката. Будь здоров.

3. Ладно, извини. Я не понимаю, кто это был.

Ответ №1:

В документации говорится следующее:

Для массива put() также принимает необязательный третий аргумент, OVERWRITE . Это BOOLEAN значение (по умолчанию FALSE ), которое указывает, следует ли заменить существующее значение в данной позиции.

Поэтому вам нужно сделать:

 declare
  arr JSON_ARRAY_T;
begin
  arr := JSON_ARRAY_T('["value_1", "value_2", "value_3"]');
  arr.put(1, 'value_4', true);
  dbms_output.put_line(arr.stringify);
end;
/
 

db<>скрипка