2023-12-02 11:08阅读: 1700评论: 0推荐: 0

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分页查询

posted @   所遇所思  阅读(1700)  评论(0编辑  收藏  举报  
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
🔑
  1. 1 404 not found REOL
  2. 2 偏爱 张芸京
  3. 3 Glimpse of Us Joji
404 not found - REOL
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作曲 : Reol

作词 : Reol

fade away...do over again...

fade away...do over again...

歌い始めの一文字目 いつも迷ってる

歌い始めの一文字目 いつも迷ってる

どうせとりとめのないことだけど

伝わらなきゃもっと意味がない

どうしたってこんなに複雑なのに

どうしたってこんなに複雑なのに

噛み砕いてやらなきゃ伝わらない

ほら結局歌詞なんかどうだっていい

僕の音楽なんかこの世になくたっていいんだよ

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

僕は気にしない 君は気付かない

何処にももういないいない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

忘れていく 忘れられていく

We don't know,We don't know.

目の前 広がる現実世界がまた歪んだ

目の前 広がる現実世界がまた歪んだ

何度リセットしても

僕は僕以外の誰かには生まれ変われない

「そんなの知ってるよ」

気になるあの子の噂話も

シニカル標的は次の速報

麻痺しちゃってるこっからエスケープ

麻痺しちゃってるこっからエスケープ

遠く遠くまで行けるよ

安定なんてない 不安定な世界

安定なんてない 不安定な世界

安定なんてない きっと明日には忘れるよ

fade away...do over again...

fade away...do over again...

そうだ世界はどこかがいつも嘘くさい

そうだ世界はどこかがいつも嘘くさい

綺麗事だけじゃ大事な人たちすら守れない

くだらない 僕らみんなどこか狂ってるみたい

本当のことなんか全部神様も知らない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

僕は気にしない 君は気付かない

何処にももういないいない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

忘れていく 忘れられていく

We don't know,We don't know.