处理Oracle中的不可见字符
2008-08-26 12:42:25 来源:WEB开发网核心提示:今天遇到一则案例,问题是数据库中看来完全相同的字段却存在长度差异,处理Oracle中的不可见字符, 通过lengthb以及dump,我们可以知道问题所在:SQL>selecttrim(log.sname),dump(log.sname),lengthb(log.sname)2fromst.LIMPORT_LOGl
今天遇到一则案例,问题是数据库中看来完全相同的字段却存在长度差异。
通过lengthb以及dump,我们可以知道问题所在:
SQL>selecttrim(log.sname),dump(log.sname),lengthb(log.sname) 2fromst.LIMPORT_LOGlog 3wherelog.dfee>date'2008-06-22' 4andlog.dfee<date'2008-06-23' 5andlog.sspnamelike'263%' 6groupbylog.sname,dump(log.sname); TRIM(LOG.SNAME)DUMP(LOG.SNAME)LENGTHB(LOG.SNAME) ---------------------------------------------------------------------------- 263网络通信Typ=1Len=15:50,54,51,205,248,194,231,205,168,208,197,0,0,0,015 263网络通信Typ=1Len=11:50,54,51,205,248,194,231,205,168,208,19711 |
使用DUMP函数我们发现,在有问题的数据中,数据末尾存在几个字符0,0,0,0,也就是多出了几个字符。
正是这多出的几个字符导致了存储异常。
那么这个0代表什么字符呢?在ASCII编码表里我们可以看到这对应了一个不可见字符,这是数据入库时的异常导致的:
-The End-
[]
更多精彩
赞助商链接