• Oracle中的CHR()函数与ASCII()函数


          工作中经常会处理一些因特殊字符而导致的错误,如上周我就遇到了因为换行符和回车符导致的数据上报的错误,这种错误比较难以发现,通常是由于用户的输入习惯导致的,有可能数据极少,就那么几行错误从而导致整个数据上报失败。处理这种错误可以通过应用端对数据进行过滤、处理,但最简单方便的方法就是通过SQL语句在数据库源端直接处理掉,把特殊字符替换掉等处理,利用replace函数结合CHR()函数或ASCII()函数替换掉特殊字符。

           CHR()函数:将ASCII码转换为字符

           ASCII()函数:将字符转换为ASCII码

      下面是常见字符与ascii对照表,以供参考:
      第一部分由 00H 到 1FH 共 32 个,一般用来通讯或作为控制之用,有些字符可显示于屏幕,有些则无法显示在屏幕上,但能看到其效果(例如换行字符、归位字符)。

     第二部分是由 20H 到 7FH 共 96 个,这 95 个字符是用来表示阿拉伯数字、英文字母大小写和底线、括号等符号,都可以显示在屏幕上。如下表:

        第三部分由 80H 到 0FFH 共 128 个字符,一般称为『扩充字符』,这 128 个扩充字符是由 IBM 制定的,并非标准的 ASCII 码。这些字符是用来表示框线、音标和其它欧洲非英语系的字母。

    最近一次处理回车及换行数据的过程:

    --处理换行
    update  sm_testrexxxxxx t set  value=replace(value,char(10),'')
    where t.recordtimestamp>= to_date('2016-01-01','YYYY-MM-DD HH24:MI:SS') 
    and t.teststateid in  (select teststateid from sm_teststxxxxxx r 
    where r.name like '%检验结论%' and  r.teststateid=t.teststateid);
    
    
    --处理回车
    update  sm_testrexxxxxx t set  value=replace(value,char(13),'')
    where t.recordtimestamp>= to_date('2016-01-01','YYYY-MM-DD HH24:MI:SS') 
    and t.teststateid in  (select teststateid from sm_teststxxxxxx r 
    where r.name like '%检验结论%' and  r.teststateid=t.teststateid);
     
     
    --验证是否还有回车和换行(查询出结果粘在文本框能看出)
    select distinct value,'12' from sm_testrexxxxxx t
    where t.recordtimestamp>= to_date('2016-01-01','YYYY-MM-DD HH24:MI:SS') 
    and t.teststateid in  (select teststateid from sm_teststxxxxxx r 
    where r.name like '%检验结论%' and  r.teststateid=t.teststateid);

     部分内容转自:http://blog.sina.com.cn/s/blog_9d5f7ceb01012i44.html

    -----------------------学习留存--------------------------------

  • 相关阅读:
    jquery 学习笔记
    session
    六、线程中断机制
    二、CompletableFuture(一)基础概念
    四、常见的锁
    五、synchronized细节
    三、CompletableFuture(二)常见用法
    七、等待唤醒的三种方式
    序列化 和 反序列化
    Trigger
  • 原文地址:https://www.cnblogs.com/myrunning/p/6197581.html
Copyright © 2020-2023  润新知