首页 > 解决方案 > oracle如何解析clob数据?

问题描述

我需要在 oracle 中解析 clob 数据。我想找到最佳实践。它可能是过程或函数或脚本。我能做些什么来解决这个问题?

我的桌子

Clob 数据

解析结果表应该是这样的

标签: sqloracleparsingplsqlclob

解决方案


如果您的 Oracle 版本 >= 12.1,我的第一个选项将是 JSON_TABLE,但这是我不时使用的替代选项

with a as (
            select 'ID01' AS ID,'"A1":{"B1":"C1"},"A2":{"B2":"C2"},"A3":{"B3":"C3"}' AS B FROM DUAL
            UNION
            select 'ID02' AS ID,'"B1":{"C1":"D1"},"B2":{"C2":"D2"},"B3":{"C3":"D3"}' AS B FROM DUAL
            union
            select 'ID03' AS ID,'"tablex":{"Cola":"colb"},"B2":{"C2":"D2"}' AS B FROM DUAL 
          )
SELECT CLOBID,
REGEXP_SUBSTR(CLOB_D,'"(.+?)"',1,1,null,1) AS Col1,
REGEXP_SUBSTR(CLOB_D,'"(.+?)"',1,2,null,1) AS Col2,
REGEXP_SUBSTR(CLOB_D,'"(.+?)"',1,3,null,1) AS Col3
FROM(
select ID AS CLOBID,LEVEL,REGEXP_COUNT(B,'\,',1), regexp_substr(B,'[^,]+',1,LEVEL,NULL) CLOB_D
FROM A
CONNECT BY (LEVEL - 1) <= REGEXP_COUNT(B,'\,',1)
AND ID = PRIOR ID
AND PRIOR DBMS_RANDOM.VALUE() IS NOT NULL
);

推荐阅读