oracle 从PL SQL中选定的JsonArray获取值

bcs8qyzn  于 2023-10-16  发布在  Oracle
关注(0)|答案(1)|浏览(123)

我在PL SQL中得到了以下查询

SELECT  
    JSON_ARRAY(
    '[
    {
        "role_id": "TEST1",
        "role_name": "Для тестів 1"
    },
    {
        "role_id": "TEST3",
        "role_name": "Для тестів 3"
    }
]') l
FROM dual

此查询的输出:
["[\n {\n“role_id”:“测试1”,\n“角色名称”:“role_id”:“测试3”,\n
“role_name”:“л а тест а в 3”\n }\n]"]
我关心的是如何通过应用外部查询从Upper Query中的当前JsonArray中获取所有值?需要在外部查询中获取所有“role_id”。
先谢了。

am46iovg

am46iovg1#

你想要一个json对象中数据的关系视图。这可以使用函数JSON_TABLE来实现,json对象是否是数组并不重要。

with json_tab AS
(
SELECT
'[
    {
        "role_id": "TEST1",
        "role_name": "Для тестів 1"
    },
    {
        "role_id": "TEST3",
        "role_name": "Для тестів 3"
    }
]' as data FROM DUAL
)
SELECT role_id, role_name
  FROM json_tab t,
       JSON_TABLE(
       data,
       '$[*]'
         columns (
           role_id VARCHAR2(100) PATH '$.role_id',
           role_name VARCHAR2(100) PATH '$.role_name'
         )
       ) jt; 

ROLE_ID                        ROLE_NAME            
------------------------------ ---------------------
TEST1                          Для тестів 1         
TEST3                          Для тестів 3

相关问题