Запрос json словарных данных в SQL - PullRequest
0 голосов
/ 21 апреля 2020

Мое поле CLOB в таблице содержит JSON и выглядит следующим образом:

{"a":"value1", "b":"value2", "c":"value3"}

И я пытаюсь написать запрос SQL для возврата таблицы с полями ключа и значения, как показано ниже :

key|value
---|------
a  |value1
b  |value2
c  |value3

Любая помощь будет принята с благодарностью!

1 Ответ

1 голос
/ 21 апреля 2020

Используйте JSON_TABLE, а затем UNPIVOT, если вы хотите, чтобы значения в строках вместо столбцов:

SELECT *
FROM   (
  SELECT p.*
  FROM   table_name t
         CROSS JOIN
         JSON_TABLE(
           t.value,
           '$'
           COLUMNS (
             a PATH '$.a',
             b PATH '$.b',
             c PATH '$.c'
           )
         ) p
)
UNPIVOT ( value FOR key IN ( a, b, c ) );

Так для некоторых примеров данных:

CREATE TABLE table_name (
  value CLOB CONSTRAINT ensure_json CHECK (value IS JSON)
);

INSERT INTO table_name ( value ) VALUES ( '{"a":"value1", "b":"value2", "c":"value3"}' );

Это выводит:

KEY | VALUE 
:-- | :-----
A   | value1
B   | value2
C   | value3

дБ <> скрипка здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...