Oracle转义字符
  Ebx3peZaz9BX 2023年11月02日 29 0


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   '\'

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  eHipUjOuzYYH   2023年12月10日   26   0   0 mysqlsqlUser
  hHWnOnebRjW2   2023年11月27日   23   0   0 PostgreSQLsqlbash
  9JCEeX0Eg8g4   2023年11月28日   15   0   0 主数据数据库mysql
Ebx3peZaz9BX