我使用了以下查询来显示来自JSON字符串
的数据SELECT regexp_replace(
regexp_substr('{"id": "1", "contactBy":"Rajesh Kumar"}',
'"contactBy":\s*(".*?")', 1),
'"contactBy":\s*"(.*?)"', '\1',
1, 1
) text
FROM dual;
如果我有任何特殊字符,如“(双引号)”,则文字将无法完全显示。
SELECT regexp_replace(
regexp_substr('{"id": "1", "contactBy":"Raje"sh Kumar"}',
'"contactBy":\s*(".*?")', 1),
'"contactBy":\s*"(.*?)"', '\1',
1, 1
) text
FROM dual;
ex:Raje“sh Kumar然后输出显示为Raje
但我需要输出Raje“sh Kumar。
如何更改查询以显示特殊字符?
答案 0 :(得分:0)
如果你在JSON字符串中有一个引号,那么它将使用反斜杠进行转义:
{"id": "1", "contactBy":"Raje\"sh Kumar"}
使用正则表达式(([^"\]|\\.)*)
匹配引号内的值:
SELECT REGEXP_SUBSTR(
'{"id":"1","contactBy":"Quoted \"String\"\\"}',
'"contactBy":"(([^"\]|\\.)*)"',
1,
1,
NULL,
1
) AS contactBy
FROM DUAL;
<强>输出强>:
CONTACTBY
-------------------
Quoted \"String\"\\