背景
在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:

数据库字符集

检查他们Oraclenls_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_byt转换成全角

三、附件

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

ORA-29275:部分多字节字符

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

Oracle分页查询

原文地址:https://blog.csdn.net/nxg0916/article/details/134749420

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_44720.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注