对json内容进行截取,获取json元素对应的值
sql如下

select
trim(both '"' from regexp_substr(json_str, '"f8":(("[^"]+")|([^,"}]+))', 1, 1, 'i', 1)) as f8,
trim(both '"' from regexp_substr(json_str, '"f9":(("[^"]+")|([^,"}]+))', 1, 1, 'i', 1)) as f9,
trim(both '"' from regexp_substr(json_str, '"f12":(("[^"]+")|([^,"}]+))', 1, 1, 'i', 1)) as f12
from (
select
'{"f1":"1395365","f2":"10067HBRE2024042800000000437192","f3":"20240428","f4":"8","f5":"2","f6":"1","f7":850.99,"f8":757.13,"f9":null,"f10":0.00,"f11":0.00,"f12":68.93}'
json_str
from dual
) tba;
REGEXP_SUBSTR 函数参数说明(以提取 id 为例):
json_str:要处理的字符串,即内层拼接好的 JSON 格式字符串。
'"id":"([^"]+)"[,} ]':正则表达式,含义是:
匹配 "id":" 开头,然后捕获一段不是双引号的内容(([^"]+) 是捕获组,用于提取 id 的值),最后以 ", 或 "} 或空格结尾 。
1:起始位置,从字符串第 1 个字符开始匹配。
1:匹配序号,取第 1 次匹配的结果。
'i':匹配模式,i 表示不区分大小写(这里实际大小写不影响,因为 JSON 里的键一般是固定写法,但保留该参数增强通用性 )。
1:捕获组序号,取第 1 个捕获组的内容(也就是 ([^"]+) 匹配到的部分,即 id 的实际值 )。
评论
热门帖子
- 12025-12-01浏览数:182763
- 22023-05-09浏览数:25057
- 42023-09-25浏览数:18525
- 52020-05-11浏览数:17528