Как извлечь строку после "=" в многострочном значении столбца с помощью oracle sql?

0

Вопрос

У меня есть таблица со столбцом, имеющим многострочное значение, и каждая строка представляет собой своего рода пару ключевых значений (разделенных знаком = и, вероятно, заканчивающихся новыми разрывами строк).

Пример значения в одной ячейке столбца:

Список пары ключ значение
ключ00=значение 00 <\n> ключ01=значение 01 <\n><\n> ключ02=значение 02

Я ищу запрос SQL (Oracle), чтобы найти конкретный ключ (скажем, Key01) и отобразить его в следующем формате

Клавиша ценность
Ключ01 Значение 01

Пожалуйста, помогите.

oracle sql
2021-11-24 05:28:58
1

Лучший ответ

0

Вот один из вариантов

Примеры данных:

SQL> select * from test;

        ID COL
---------- --------------------------------------------------
         1 key00=value00
           key01=value01
           key02=value02

Подзапрос возвращает подстроку, которая начинается со значения "ключ" (передается в качестве параметра), в то время как внешний запрос разбивает эту подстроку на ключ и значение самостоятельно:

SQL> select regexp_substr(str, '^\w+') key,
  2         regexp_substr(str, '\w+$') value
  3  from (select regexp_substr(col, '&par_key=\w+') str
  4        from test
  5       );
Enter value for par_key: key01

KEY             VALUE
--------------- ---------------
key01           value01

SQL>
2021-11-24 07:13:22

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................