在Oracle中将JSON数组转换为关系数据

laawzig2  于 2023-08-04  发布在  Oracle
关注(0)|答案(1)|浏览(77)

我在一个json文件中有以下数组,我需要将其转换为关系数据:

"items": [
    "item1",
    "item2",
    "item3"
  ]

字符串
我正在使用以下查询进行转换,但无法在数组中显示所需的值:

select items
from test_table stg,
     json_table(stg.json_data, '$.items[*]'
                columns (
                          items path  '$.items'
                        )
               );


我错过了什么?

vshtjzan

vshtjzan1#

您已经进入了外部路径为$.items[*]的数组。从那里开始,数组元素位于路径$,而不是$.items

SELECT items
FROM   test_table stg
       CROSS APPLY JSON_TABLE(
         stg.json_data,
         '$.items[*]'
         COLUMNS (
           items path  '$'
         )
       );

字符串
其中,对于样本数据:

CREATE TABLE test_table (json_data CLOB CHECK (json_data IS JSON));

INSERT INTO test_table(json_data)
  VALUES ('{"items": ["item1","item2","item3"]}');


输出:
| ITEMS |
| ------------ |
| item1 |
| item2 |
| item3 |
fiddle

相关问题