Как можно получить значения поля cli_codes из массива с использованием PL/SQL?

Как извлечь данные "11111111111","1121212122","454646646" из поля cli_codes в формате CLOB, используя PL/SQL, если обычные функции json_value и JSON_ARRAy не подходят?
  • 18 декабря 2023 г. 6:07
Ответы на вопрос 2
Если обычные функции JSON_VALUE и JSON_ARRAY не подходят, можно воспользоваться методом SUBSTR и INSTR для извлечения данных из поля CLI_CODES в формате CLOB, используя PL/SQL.

Пример:
```sql
DECLARE
  v_clob CLOB;
  v_cli_codes VARCHAR2(1000);
BEGIN
  -- присвоение значения полю CLI_CODES
  v_clob := '{"cli_codes": ["11111111111","1121212122","454646646"]}';

  -- поиск позиции начала значения поля cli_codes
  IF INSTR(v_clob, 'cli_codes') > 0 THEN
    v_cli_codes := SUBSTR(v_clob, INSTR(v_clob, 'cli_codes') + 11); -- добавляем 11, чтобы пропустить символы 'cli_codes":["'
    v_cli_codes := SUBSTR(v_cli_codes, 1, INSTR(v_cli_codes, '"]') - 1);
  END IF;

  DBMS_OUTPUT.PUT_LINE(v_cli_codes);
END;
```
В результате выполнения данного кода будет выведено следующее:
```
"11111111111","1121212122","454646646"
Навскидку как-то так: 

JSON_TABLE() function
Похожие вопросы