#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;
/