文档章节

Oracle 转义

保罗的寓言
 保罗的寓言
发布于 2012/12/14 01:16
字数 693
阅读 280
收藏 3

在Oracle中,有些特殊函数的字符是有着特定的含义,这样的话,在检索包含有这样的字符时,就需要进行转移,

总结如下,

1. 通过escape 方式来进行转义,或者是特殊函数的转义' ;

create table t_char(a varchar2(20));
insert into t_char values('a_b');
insert into t_char values('acb');
insert into t_char values('a%b');
insert into t_char values('a''b');
insert into t_char values('a/b');
insert into t_char values('a\b');
insert into t_char values('%');
insert into t_char values('a');
insert into t_char values('_');

测试如下: 


SQL> select * from t_char where a like 'a\_b' escape '\'; 

 
 
 

  
A -------------------- a_b
 
--可见要查询含有通配字符的字符串,必须要使用escape函数
 
 
SQL> select * from t_char where a like 'a\'b' escape '\'; ERROR: ORA-01756: quoted string not properly terminated
SQL> select * from t_char where a like 'a''b' escape '\';
A -------------------- a'b
 
--但是字符'还是需要用两个''来代替字符串中的单引号
 
 
SQL> select * from t_char where a like 'ax_b' escape 'x';
A -------------------- a_b
 
SQL> select * from t_char where a like 'a''_b' escape '''';
A -------------------- a_b
 
SQL> select * from t_char where a like 'a_%b' escape '_';
A -------------------- a%b
 
--可以用其他字符,甚至是“'”、“_”、“%”来用作转义字符,但是一般都使用\,以免发生逻辑错误
 
 
SQL> select * from t_char where a like 'a\/b' escape '\'; select * from t_char where a like 'a\/b' escape '\'                                   * ERROR at line 1: ORA-01424: missing or illegal character following the escape character
SQL> select * from t_char where a like 'a_/b' escape '_'; select * from t_char where a like 'a_/b' escape '_'                                   * ERROR at line 1: ORA-01424: missing or illegal character following the escape character
 
SQL> select * from t_char where a like 'a//b' escape '/';
A -------------------- a/b
 
SQL> select * from t_char where a like 'a/\b' escape '/'; select * from t_char where a like 'a/\b' escape '/'                                   * ERROR at line 1: ORA-01424: missing or illegal character following the escape character
 
SQL> select * from t_char where a like 'a\\b' escape '\';
A -------------------- a\b
 
--要搜索"/"或者"\"则必须使用与之相同的符号作为转义字符,否则无效


  1. 通过escape函数基本上能处理掉常见的转移,但是还有一种比较常见的方式就是通过chr函数,直接通过ascii码的方式来进行转移


              chr()函数将ASCII码转换为字符:字符 –》 ASCII码;

              ascii()函数将字符转换为ASCII码:ASCII码 –》 字符;

              在oracle中chr()函数和ascii()是一对反函数



select * From emp t where t.empno=7839;
-----开始介绍oracle中的条件控制函数的作用
----1,nvl(expr, value)表示expr如何为null的话,就用后面的value替换。否则就进行替换。
----2.nvl2(expr,not null,null) 表示如何expr为null的话就使用第三个参数来替换,否则使用第二的参数来替换
----3.nullif(expr1,expr2) 表示如何expr1==expr2 返回expr1的值,否则返回null
----4.coalesce(expr1,expr2,......,exprn) 表示返回参数列表中第一个不为null的表达式值。
               
select nvl(t.comm,0) as comm,nvl2(t.mgr,'default','null'),
nullif(cast(t.empno as varchar2(10)),t.ename) ,
coalesce(t.comm,t.mgr,t.empno,t.deptno)
From emp t where t.empno=7839;

© 著作权归作者所有

上一篇: sql统计
保罗的寓言
粉丝 25
博文 70
码字总数 40506
作品 0
杨浦
高级程序员
私信 提问
Oracle的SQL语句中如何处理‘&’符号

在Oracle中,如果在sql中出现'&'符号,会被自动转义; 而被要求输入在&符号后跟随的字符串的值,例如: update tablename set columnName='http://www.g.cn/cv2.jsp?spid=222&cid=333'; 执行......

xiao刀
2013/04/27
512
1
java中对SQL模糊查询通配符%的处理

在模糊查询的SQL语句中,如果有用户输入查询通配符‘%’,使用 select * from table where code like '%condition%'的SQL,会查出全部记录,这个如何解决叱? if(!StringUtils.isEmpty(cnam...

geeksun
2012/07/01
3.2K
0
oracle 特殊字符& 处理

今天在导入一批数据到Oracle时,碰到了一个问题:Toad提示要给一个自定义变量AMP赋值,一开始我很纳闷,数据是一系列的Insert语句,怎么会有自定义变量呢?后来搜索了一下关键字AMP发现,原来...

狮子暴走
2014/10/17
89
0
Oracle中如何插入特殊字符:& 和 '

今天在导入一批数据到Oracle时,碰到了一个问题:Toad提示要给一个自定义变量AMP赋值,一开始我很纳闷,数据是一系列的Insert语句,怎么会有自定义变量呢?后来搜索了一下关键字AMP发现,原来...

kanlianhui
2013/08/22
189
0
oracle存储过程中单引号及字符串拼接处理

在ORACLE中,单引号有两个作用,一是字符串是由单引号引用,二是转义。单引号的使用是就近配对,即就近原则。而在单引号充当转义角色时相对不好理解   1、从第二个单引号开始被视为转义符,...

蒙奇D刘辉
2014/04/10
261
0

没有更多内容

加载失败,请刷新页面

加载更多

vue vue-router beforeRouteEnter

本文转载于:专业的前端网站➬vue vue-router beforeRouteEnter beforeRouteEnter (to, from, next) { // 在渲染该组件的对应路由被 confirm 前调用 // 不!能!获取组件实例 `thi...

前端老手
47分钟前
4
0
Spring Boot 2 实战:结合 Docker 容器化

1. 前言 Docker 是啥?好处是啥? 什么现在如果作为一名开发你还不知道甚至没有用过我都感觉你落伍了。Docker 是一种虚拟化的容器技术,目的为了打造持续集成、版本控制、可移植性、隔离性和...

码农小胖哥
52分钟前
4
0
Linux 常用查询句柄的命令(Too many open files)

摘要 查询命令 进程占用的句柄总数 lsof -n | wc -l 查看哪一个进程占用的句柄最多 lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more 第一列 是 占用句柄数; 第二列 是 进程号 PID;...

liangxiao
52分钟前
5
0
JavaScript权威指南笔记5

第五章、语句 0、概述 JS程序是一系列可执行语句的集合。 通过控制语句来改变语句的默认执行顺序。 控制语句:条件、循环和跳转(如return、break和throw) 2、复合语句 当多条语句被当做一条语...

_Somuns
58分钟前
5
0
vmware安装ubuntu18.04总是 panic -not syncing:corrupted stack end detected inside schedule

Vmware 安装ubuntu 总是卡着不动, 提示panic -not synciong 网上提示很多办法,都试了效果不佳, 找到了完美解决办法 你的兼容模式重新选一下为6.0,兼容性对硬件有要求的 即可实现 成功安装...

dragon_tech
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部