orcale trim 不掉空白字符分享

问题背景:

一个工商注册号,正常的用trim能解决的问题,但是这个casetrim后和肉眼看到的就是不一样就是多了一个字符

分析问题:

为了能问题重现,下面模拟 创造一个12345加上一个特殊字符(假象空白)

select concat('123456',chr(9)) as xx  from dual)

 

 

 

1看看长度

SELECT  length(concat('123456',chr(9))) as xx  from dual

 

 

看到上面里面 心里感觉有空字符(6=7

 

试试 trim的效果

    SELECT  length(xx),length(trim(xx))

    from(

select concat('123456',chr(9)) as xx  from dual)

 

 

发现trim不掉还是7个长度

 

Ok我们用dump函数来了解oracle的数据类型存储方式

select dump(xx) from (select concat('123456', chr(9)) as xx from dual)

 

上面type=1标示 值得类型是VARCHAR2

Len标示该值占用的字节数,是7个长度

49,50,51,52,53,54,9

49,50,51,52,53,54对于ascii码是123456

9 这个ascii值是 水平定位符号

 

但是这个9是怎么进去的呢? ctrl+tab键加入的

解决问题:直接更新掉

后续的规划 进行数据来源输入校验。

关于 Oracle dump函数的用法

http://space.itpub.net/25744374/viewspace-723192

关于oracle字符集的深入研究

http://www.cnblogs.com/KissKnife/archive/2011/11/11/2245410.html

猜你喜欢

转载自sjiwang-163-com.iteye.com/blog/1895005
今日推荐