anywhere

导航

oracle trim不掉空白字符分享(转)


问题背景:
一个工商注册号,正常的用trim能解决的问题,但是这个case,trim后和肉眼看到的就是不一样就是多了一个字符
分析问题:
为了能问题重现,下面模拟 创造一个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键加入的!

ascii 码在线查询:http://www.supfree.net/search.asp?id=6132

posted on 2013-09-11 12:02  anywhere  阅读(677)  评论(0编辑  收藏  举报