- 最后登录
- 2013-12-13
- 在线时间
- 7 小时
- 威望
- 0
- 金钱
- 45
- 注册时间
- 2013-1-9
- 阅读权限
- 10
- 帖子
- 7
- 精华
- 0
- 积分
- 0
- UID
- 854
|
1#
发表于 2013-1-9 16:41:00
|
查看: 18564 |
回复: 3
前几天有个测试库的存储被撤了,导致开发人员连不了数据库,重新挂载之后,开发和我说查询某些表的时候发现有问题:
SQL>select * from grt_fp;
ORA-29275: partial multibyte character
做了一些小测试之后发现主要的错误是在有中文的字段,其它字段可正常显示
在网上搜索了一下,大概的原因就是有被截断的中文字符的原因.
之后又做了一些测试:
SQL>select length(description) Len from grt_fp where code=51120;
Len
--------------------
15
SQL>select length(description) Len,dump(description) Dump from grt_fp where code=51120;
Len
---------------------
15
Dump
-----------------------------------------------------------------------------------------
Typ=1 Len=18: 119,121,83,80,52,52,48,48,49,48,48,195,232,215,214
SQL>select description from grt_fp where code=51120;
DESCRIPTION
-----------------------------------------
spSP01010101描述字
从上面可以看出,正常列中存储的长度应该是18,而在查询时长度却只有15
于是感觉应该是里面有非法字符的原因,于是做了以下操作
SQL>update xxx set description=TRIM(description) where code=51120;
1 rows updated.
这时用Secure CRT可以查询不报错,但用plsqldeveloper查询时仍然报错.
这个有没有什么方法可以彻底解决 ? |
|