易截截图软件、单文件、免安装、纯绿色、仅160KB

oracle中的不可见字符

今天做统计的时候发现一个数据表面上看来是‘920 ’但去空格无乱如何都去不掉,最后发现是不可见字符。。。
于是在网上搜到一篇文章,如何来判断这个不可见字符的问题~
按下面的方法判断出不可见字符的ascII码是10,于是用rtrim('原字符','chr(10)')来去掉这个不可见字符。
今天遇到一则案例,问题是数据库中看来完全相同的字段却存在长度差异。
  通过lengthb以及dump,我们可以知道问题所在:
      SQL> select trim(log.sname),dump(log.sname),lengthb(log.sname) 
  2 from st.LIMPORT_LOG log 
  3 where log.dfee > date '2008-06-22' 
  4 and log.dfee < date '2008-06-23' 
  5 and log.sspname like '263%' 
  6 group by log.sname,dump(log.sname); 
  TRIM(LOG.SNAME) DUMP(LOG.SNAME) LENGTHB(LOG.SNAME) 
  ------------------- ----------- ---------------------------------------------- 
  263网络通信 Typ=1 Len=15: 50,54,51,205,248,194,231,205,168,208,197,0,0,0,0 15 
  263网络通信 Typ=1 Len=11: 50,54,51,205,248,194,231,205,168,208,197 11
  使用DUMP函数我们发现,在有问题的数据中,数据末尾存在几个字符0,0,0,0,也就是多出了几个字符。
  正是这多出的几个字符导致了存储异常。
  那么这个0代表什么字符呢?在ASCII编码表里我们可以看到这对应了一个不可见字符,这是数据入库时的异常导致的:
  -The End-


相关文档:

oracle 之系统表 点滴 积累

查看正在执行的sql语句
SELECT osuser, username, sql_text from v$session a, v$sqltext b where a.sql_address =b.address order by address, piece;
捕捉运行很久的SQL
 select username,sid,opname, round(sofar*100 / totalwork,0) || '%' as progress, time_remaining,sql_text from v$session_longops , v$ ......

Oracle高级技巧

1.在删除一个表中的全部数据时,须使用TRUNCATE TABLE 表名;因为用DROP TABLE,DELETE * from 表名时,TABLESPACE表空间该表的占用空间并未释放,反复几次DROP,DELETE操作后,该TABLESPACE上百兆的空间就被耗光了。
  
  2.having 子句的用法
  
  having 子句对 group by 子句所确定的行组进行控制,having 子 ......

Oracle的Package的作用以及使用什么工具编写

1、Oracle的Package除了把存储过程放到一堆儿以外还有没有其他的作用(好处)?
2、如何把现有的存储过程加入到Package中?
3、除了使用SQL Plus,还有没有什么工具做Package?
4、使用SQL Plus编译Package,是否每次都是编译Package中所有的存储过程?
1、你不觉得把存储过程分门别类是很重要的么,而且不同的package的 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号