【发布时间】:2016-07-28 12:09:27
【问题描述】:
我正在使用带有 正则表达式 和 oracle regexp_substr 的 Oracle 查询从 JSON 字符串中提取 json 字段。
当我尝试获取代码键的值时,它运行良好及其值,但是当我尝试获取结果键的值时,它返回 null。
我正在使用这个查询:
select regexp_replace(regexp_substr('{"code":"001","message":"success","transactionId":437,"results":{"name":"osama"}}','"results":\s*("(\w| )*")', 1, level), '"results":\s*"((\w| )*)"', '\1', 1, 1) results
from dual
connect by regexp_substr('{"code":"001","message":"success","transactionId":437,"results":{"name":"osama"}}', '"results":\s*("(\w| )*")', 1, level) is not null;
这个查询有什么问题? 谢谢
【问题讨论】:
-
那是因为 \w 只匹配字母数字字符。您尝试在结果中匹配的字符串是 -
{"name":"osama"},它有大括号、双引号和冒号。你在使用 oracle 12c 吗? -
谢谢@ruudvan,不,我没有使用oracle 12c,你能帮我正确表达吗
标签: json database oracle regexp-replace regexp-substr