`
王世纪
  • 浏览: 17269 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

  • 大小: 5.7 KB
  • 大小: 1.8 KB
  • 大小: 4.5 KB
  • 大小: 1.6 KB
  • 大小: 17.9 KB
  • 大小: 3.9 KB
  • 大小: 16.7 KB
  • 大小: 4.4 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics