Мне нужно получить часть поля BLOB-объекта, содержащего некоторые данные JSON. одна часть капли похожа на это CustomData:{HDFC;1;0;sent}
. Мне нужны отдельные значения после CustomData
, такие как HDFC
, 1
, 0
, отправленные отдельно.
Это то, что я пробовал в двух отдельных запросах, которые работают:
Это дает мне индекс CustomData
в поле payment_data
blob, например, возвращает 11000
select dbms_lob.instr(payment_data, utl_raw.cast_to_raw('CustomData'))
from table_x;
Я указываю 3-й параметр как первый возвращенный запрос + длина теста CustomData:
, чтобы получить {HDFC;1;0;sent}
select UTL_RAW.CAST_TO_VARCHAR2(dbms_lob.substr(payment_data,1000,11011))
from table_x;
Проблема в том, что мне нужно принять динамическое смещение во 2-м запросе, а не запускать 1-й запрос как отдельный. Задание динамического смещения не работает с функцией dbms_lob.substr (). Любые предложения, как я могу объединить эти два запроса в один?
Как только я получу {HDFC;1;0;sent}
, мне также нужно получить эти разделенные значения отдельно, поэтому объединение этих трех в одно было бы даже лучше, если бы кто-то мог помочь с этим. Я могу использовать regexp_substr, чтобы получить текст с разделителями, как только я получу первые два вместе.