Oracle 12cR1
У меня есть столбец с длинными строками, как показано ниже
:Key1:Value1:Key2:Value2:Key3:Value3:Key4...…..
Ключи являются уникальными числами.Значения - это любое строковое значение, которое может быть даже числом, аналогичным любому другому ключу.Если я даю ключ, я должен получить его соответствующее значение.Например,
lengthy_str_col := ':101:abc:12:43:43:101.4:4:bus'
Для получения значения для ключа, 43, я попробовал следующее:
SELECT REGEXP_SUBSTR(lengthy_str_col,'(:([^:])+)(:[^:]+)') FROM DUAL;
Это дает мне первую пару ключ-значение ':1:abc'
.Теперь, когда я знаю, что 43 - третий ключ, я использовал
SELECT REGEXP_SUBSTR(lengthy_str_col,'(:([^:])+)(:[^:]+)', 1, 3, 'i', 4) FROM DUAL;
, чтобы получить значение 101.4
для ключа 43
.
Но требуемый ключ может быть в любомслучайная позиция.Есть ли способ получить значение для любого данного ключа?