当前位置: 首页 > article >正文

Oracle之ORA-29275: 部分多字节字符

背景:
在Oracle数据库中,通过查询 A表所有数据,发现某个字段出现字符问题

SELECT * FROM  A

一、遇到的问题

ORA-29275: 部分多字节字符

排查过程:

1.先定位到哪条数据有问题,这可以通过二分查找方式缩小查询范围

SELECT * FROM A  WHERE rownum < 12;

2.拿出A所有的字段,进行查询,同样通过二分查找的方式缩小查询范围

select q,w,e,r... from A

3.最终定位到 A表中的 w字段有问题

select w from A

显示如下错误:ORA-29275: 部分多字节字符

原因分析:

可能某个字段中有半个中文字符则会报这个异常,原因为Oracle编码问题。

二、解决方法:

方法1:
在有问题的字段上面加上 to_nchar(字段)

select  TO_NCHAR(w) from A
-- 或者
select TO_SINGLE_BYTE(w) from  A	

方法2:

改数据库字符集

检查他们Oracle的nls_lang环境变量,发现他们客户端的nls_lang设置为 american.

改成export NLS_LANG=AMERICAN_AMERICA.ZHS16CGB231280后, 就正常了。

方法3:

在oracle中字段中找出汉字的方法:可以利用length(testname)和lengthb(testname),其中length(testname)不论数字或者字符都算一个,

而lengthb则不同,比如说testname的值为:54看法12,用length(testname)的值为6,而lengthb(testname)的值为:8。

利用这个就可以非常清楚的判断一个字符中是否包含汉字了(字母除外)。
to_single_byte©转换成半角

to_multi_byte©转换成全角

三、附件

参考:
ORA-29275部分多字节字符处理

ORA-29275:部分多字节字符

Oracle数据库报错: ORA-29275:部分多字节字符

Oracle分页查询


http://www.kler.cn/a/158167.html

相关文章:

  • Ubuntu 2204 安装libimobiledevice
  • PIC12F1572-I/SN国产低成本32位MCU替换
  • 操作系统复习总结——文件管理
  • 如何判断服务器是否被CC攻击了,被CC了要如何防御
  • 食品行业研究:金枪鱼产业发展及市场消费分析
  • 11.30BST理解,AVL树操作,定义;快速幂,二分求矩阵幂(未完)
  • 矩阵的初等变换
  • 如何优雅的调用三方接口
  • JS中的 回调函数(callback)
  • k8s的部署管理以及prometheus相关监控
  • postgresql 将所有表的id列设置为自增主键,自增起始数值为该表的最大id
  • 微信小程序云开发报错
  • Native API 在 HarmonyOS 应用工程中的使用指导
  • Leetcode 2949. Count Beautiful Substrings II
  • mapbox实现框选要素
  • 10倍提升启动的时间?Graalvm打包Springboot+MyBatis实测
  • 珠海市第四届职业技能大赛成功举办,开源网安提供全程技术支持
  • 基于Spring,SpringMVC,MyBatis的高校大学社团系统
  • ESP32 LVGL Gui-Guider的移植
  • Linux 进程优先级