Oracle:ORA-30186: ‘‘\‘‘ 的后面必须为四个十六进制的字符或另一个 ‘‘\‘‘

Oracle数据库解析字符串生成JSON对象时.生僻字识别失败.抛出ORA-30186

示例代码

declare
  str varchar2(2000);
  obj json;    -- json对象
begin
  -- json 字符串
  str := '{"name":"碶"}';  
  -- 首先进行格式化
  obj := json(str);    
  -- 打印
  obj.print;
end;

抛出异常

ORA-30186: ''\'' 的后面必须为四个十六进制的字符或另一个 ''\''
ORA-06512: 在 "DEV.JSON_PARSER", line 294
ORA-06512: 在 "DEV.JSON_PARSER", line 390
ORA-06512: 在 "DEV.JSON_PARSER", line 646
ORA-06512: 在 "DEV.JSON", line 13
ORA-06512: 在 line 5

解决方式

在json解析前,通过 replace 函数, 换成 utf 编码

declare
  str varchar2(2000);
  obj json;    -- json对象
begin
  -- json 字符串
  str := '{"name":"碶"}';  
  -- 关键字替换
  str := replace(str, '碶', '\u78b6');
  -- 首先进行格式化
  obj := json(str);    
  -- 打印
  obj.print;
end;

转自:https://blog.csdn.net/jioujiou520/article/details/121700995

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值