sql - oracle如何解析clob数据?
解决方案
如果您的 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
);
推荐阅读
- java - 手动将控制器创建的跟踪连接到 Sleuth 中的不同跟踪
- sonarqube - 是否建议对标准 JS 文件(如 bootstrap.js、jquery-1.10.2.js、highcharts.src.js 等)进行更改以关闭声纳观测
- c# - 在用户控件中公开控件的 itemsource 属性
- excel - 在M语言excel中显示两个日期之间的所有日期
- python - 在单个字符串中打印熊猫行(jupyter notebook)
- android - 使用随相机位置旋转的平板电脑拍照
- c# - 如何使用直线 API 将机器人集成到网站
- vue.js - vue-router 没有得到正确的参数
- python - 如何确定滤波器功能是否适用于半幅度或半功率截止
- android - 找不到 baseLibrary.jar (com.android.databinding:baseLibrary:3.1.2)