【问题标题】:PLSQL turn clob containing json into tablePLSQL将包含json的clob转成表
【发布时间】:2021-10-20 19:28:54
【问题描述】:

有没有办法将包含 JSON 对象的 clob 变成表

例如,我有一个包含 [{"a":"1","b":"1"; “a”:“2”,“b”:“2”; "a":"2","b":"2"}] 我想把它变成一个表,以便将它与我数据库中的其他表连接起来。

有办法吗?

谢谢!

【问题讨论】:

标签: oracle plsql oracle-apex plsqldeveloper


【解决方案1】:

您的 JSON 格式肯定不是很好。但是,一旦清理完毕,您就可以使用 JSON_TABLE 来实现您的目标:

WITH test_data (json) AS
(
  SELECT '{"rows":[{"a":"1","b":"1"},{"a":"2", "b":"2"},{"a":"2","b":"2"}]}' FROM DUAL
)
SELECT jt.*
FROM test_data td,
JSON_TABLE(td.json, 
           '$.rows[*]' 
           COLUMNS (row_number FOR ORDINALITY, 
                    a INTEGER PATH '$.a', 
                    b INTEGER PATH '$.b')) jt

产生以下结果:

row_number a b
1 1 1
2 2 2
3 2 2

这是一个 DBFiddle,展示了它是如何工作的 (Link)

【讨论】:

    【解决方案2】:

    看看这是否有帮助。

    PLSQL looping through JSON object

    它或多或少地回答了您的问题,尽管我不确定它是否可以处理不知道列名、找出它们并从中创建表的情况。

    否则,您可能会先进行一些 REGEXP 解析以找出不同的列名,然后使用 json 包遍历它,或者手动循环遍历它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-01
      • 1970-01-01
      • 2019-07-26
      • 2022-09-26
      • 1970-01-01
      • 1970-01-01
      • 2019-07-29
      相关资源
      最近更新 更多