zoukankan      html  css  js  c++  java
  • oracle 特殊字符 转义

    1、oracle 特殊字符 转义
    关键词: oracle    转义                                          
    环境:oracle 9i  plsql
    在plsql里边执行:
    update userinfo set pageurl='myjsp?page=1&pagesize=10' where id='test'
    这条sql语句往数据库的pageurl字段放进去了一个url地址,但是执行的时候却并非那么理想,因为这其中有一个oracle的特殊字符,需要进行转义,那就是字符'&'.
    怎么处理上例中的特殊字符?
    两个办法:
           1) update userinfo set pageurl='myjsp?page=1'||'&'||'pagesize=10' where id='test'
            2) update userinfo set pageurl='myjsp?page=1'||chr(38)||'pagesize=10' where id='test'
    其中||是连字符, chr(38)跟ASCII的字符转码是一致的。
    plsql中还可以set define off来关闭特殊字符,还可以用show define来查看有些特殊定义的字符。

    2、oracle 中如何转义 特殊字符
    问 : 如何转义 下划线 _
    select * from ng_values where name like 'lady_%'
    jieguo 结果显示 lady_test,lady_test,lady1
    正确结果应该是:lady_test,lady_test
    不包括 lady1
    请各位给出转义方法,3ks
    answer:
    select ... from ... where ... like '/_%' escape '/';

    3、
    insert into t(col) values(chr(ascii('&'))) ;
    (方法一)
    例:插入特殊字元'&'
    SQL> SHOW DEFINE
    define "&" (hex 26) ? <--- DEFINE的default值是 ‘&’
    SQL> SET DEFINE OFF
    SQL> SHOW DEFINE
    define OFF
    SQL> INSERT INTO <table_name> VALUES ('AT&T');
    /
    1 row created
     
    (方法二)
    SQL> SHOW ESCAPE
    escape OFF <--- ESCAPE的default值是 OFF
    SQL> SET ESCAPE ON
    SQL> SHOW ESCAPE
    escape "\" (hex 5c)
    SQL> INSERT INTO temp_table VALUES ('select * from emp where ename = \&1');
    1 row created.

    几个测试方法:
    SELECT 'myjsp?page=1&pagesize=10' FROM dual;
    SELECT 'myjsp?page=1&pagesize=10' FROM dual;
     
    SQL>   create   table   a   (b   varchar2(10));  
       
      Table   created  
       
      SQL>   insert   into   a   values('_a');  
       
      1   row   inserted  
       
      SQL>   select   B   from   A   where   instr(b,'_a')>0;  
       
      B  
      ----------  
      _a   
      select   B   from   A   where   b   like   '%\_a%'   escape   '\'
    先启动转义符  
      set   escape   on  
      select   B   from   A   where   b   like   '%\_a%'   escape   '\';
    select   B   from   A   where   b   like   '%\_a%'   escape   '\'  

  • 相关阅读:
    2013=730 胆子要大,敢想敢做
    2013=7=30 自增量的浅谈
    2013=7=29 nyist 13题
    2013=726 整合,优化,利用自身资源。 让自己的时间更有意义,最大化利用
    2013=7=22
    2013=7=23 超级阶梯
    机器人写诗项目——递归神经网络(RNN)
    和程序员在一起是怎样的体验
    和程序员在一起是怎样的体验
    人工智能数学基础——线性代数
  • 原文地址:https://www.cnblogs.com/ungshow/p/1680675.html
Copyright © 2011-2022 走看看