当前位置:数据库 > Oracle >>

oracle trim不掉空白字符分享

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键加入的!

解决问题:直接更新掉

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,