Oracle 条件运算符


比较运算符 
>,<:大于,小于 
>=.<=:大于等于,小于等于 
=:等于 
!=,<>,^=:不等于 

逻辑运算符运算的优先顺序是NOT,AND,OR。如果要改变优先顺序,可以使用括号 

逻辑运算符 
AND:逻辑与,表示两个条件必须同时满足 
OR:逻辑或,表示两个条件中有一个条件满足即可 
NOT:逻辑非,返回与某条件相反的结果 

特殊运算符 
[NOT] BETWEEN…AND…:用于测试是否在范围内 
[NOT] IN (…):用于测试是否在列表中 
[NOT] LIKE:用于进行模式匹配 
IS [NOT] NULL:用于测试是否为空值 
ANY SOME:同列表或查询中的每一个值进行比较,测试是否有一个满足,前面必须使用的运算符包括=、!=、>=、<=、>、<等
ALL:同列表或查询中的每一个值进行比较,测试是否所有的值都满足,前面必须使用的运算符包括=、!=、>=、<=、>、<等 
[NOT] EXISTS:测试是否子查询至少返回一行 

IN的用法 
使用以下运算形式,可以显示值满足特定集合的结果: 
[NOT] IN (...) 
显示职务为“SALESMAN',“CLERK”和“MANAGER”的雇员信息。 
输入并执行查询: 

SELECT * FROM emp WHERE job IN ('SALESMAN','CLERK','MANAGER');

执行结果从略。 
注意:如果在IN前面增加NOT,将显示职务不在集合列表中的雇员。以上用法同样适用于数值型集合, 

多行子查询  
如果子查询返回多行的结果,则我们称它为多行子查询。多行子查询要使用不同的比较运算符号,它们是IN、ANY和ALL。 
查询工资低于任何一个“CLERK”的工资的雇员信息。 
执行以下查询: 

SELECT  empno, ename, job,sal FROM emp
		WHERE   sal < ANY (SELECT sal FROM emp WHERE job = 'CLERK')
		AND job <> 'CLERK';

说明:在emp表的雇员中有4个职务为“CLERK”,他们的工资分别是800、1100、950、1300。满足工资小于任何一个“CLERK”的工资的记录有2个,在这里使用了ANY运算符表示小于子查询中的任何一个工资。 
注意:条件job <> 'CLERK'排除了职务是CLERK的雇员本身。 
查询工资比所有的“SALESMAN”都高的雇员的编号、名字和工资。 
执行以下查询: 

Sql代码   收藏代码
  1. SELECT  empno, ename,sal FROM emp  
  2.         WHERE sal > ALL(SELECT sal FROM emp WHERE job= 'SALESMAN');  

执行结果为: 
  
Sql代码   收藏代码
  1. EMPNO ENAME             SAL  
  2.     ---------------- ------------- -----------------------  
  3.       7566 JONES               2975  
  4.       7698 BLAKE               2850  
  5.       7782 CLARK               2450  
  6.       7788 SCOTT               3000  
  7.       7839 KING                5000  
  8.       7902 FORD                3000  

    说明:在emp表的雇员中有4个职务为“SALESMAN”,他们的工资分别是1600、1250、1250、1500。在这里使用了ALL运算符,表示大于查询中所有的工资。 
查询部门20中职务同部门10的雇员一样的雇员信息。 
执行以下查询: 
Sql代码   收藏代码
  1. SELECT  empno, ename, job FROM emp  
  2. WHERE   job IN (SELECT job FROM emp WHERE deptno=10)  
  3. AND deptno =20;  

执行结果为: 
  
Sql代码   收藏代码
  1. EMPNO ENAME          JOB  
  2.     ------------------ -------------- ----------------------  
  3.       7369 SMITH        CLERK  
  4.       7876 ADAMS        CLERK  
  5.       7566 JONES        MANAGER  


说明:在该训练中,使用IN运算符表示职务是子查询结果中的任何一个。部门10中有3种职务:MANAGER、PRESIDENT和CLERK,以上查询得到的是部门20中是这3种职务的雇员。 

多列子查询  
如果子查询返回多列,则对应的比较条件中也应该出现多列,这种查询称为多列子查询。以下是多列子查询的训练实例。 
查询职务和部门与SCOTT相同的雇员的信息。 
执行以下查询: 
Sql代码   收藏代码
  1. SELECT  empno, ename, sal FROM emp  
  2.         WHERE (job,deptno) =(SELECT job,deptno FROM emp WHERE empno=7788);  

执行结果为: 
    
Sql代码   收藏代码
  1. EMPNO ENAME      JOB  
  2.         ------------------ --------------- ----------------  
  3.             7902 FORD        ANALYST  

说明:在该例的子查询中返回两列,查询条件中也要出现两列,表示雇员的职务和部门应该和SCOTT的职务和部门相同。 

LIKE的用法  
使用LIKE操作符可完成按通配符查找字符串的查询操作,该操作符适合于对数据进行模糊查询。其语句法为: 
[NOT] LIKE 匹配模式 
匹配模式中除了可以包含固定的字符之外,还可以包含以下的通配符: 
%:代表0个或多个任意字符。 
_ :代表一个任意字符。 
显示姓名以“S”开头的雇员信息。 
输入并执行查询: 
Sql代码   收藏代码
  1. SELECT * FROM emp WHERE ename LIKE 'S%';  

执行结果为: 
Sql代码   收藏代码
  1. EMPNO ENAME     JOB             MGR HIREDATE     SAL   COMM     DEPTNO  
  2.         ------------- -------------- ------------------------- ---------- ------------------ ----------- ------------ ------------------  
  3. 7369 SMITH    CLERK 7902 17-12月-80       800     20  
  4. 7788 SCOTT    ANALYST   7566 19-4月 -87   3000           20  

说明:SMITH和SCOTT名字均以S开头,名字后边的字符和长度任意。 
显示姓名第二个字符为“A”的雇员信息。 
执行查询: 
Sql代码   收藏代码
  1. SELECT * FROM emp WHERE ename LIKE '_A%';  


说明:“_”代表第一个字符任意,第二个字符必须为“A”,“%”代表第二个字符后面的字符为任意字符,个数任意。 

判断空值NULL  
在表中,字段值可以是空,表示该字段没有内容。如果不填写,或设置为空则我们说该字段的内容为NULL。NULL没有数据类型,也没有具体的值,但是使用特定运算可以判断出来。这个运算就是: 
IS  [NOT] NULL 
显示经理编号没有填写的雇员。 
输入并执行查询: 
Sql代码   收藏代码
  1. SELECT  ename, mgr FROM emp WHERE mgr IS NULL;  

执行结果为: 
Sql代码   收藏代码
  1. ENAME     MGR  
  2.         ------------ ---------------  
  3.         KING  

  注意:以下用法是错误的。  
SELECT  ename, mgr FROM emp WHERE mgr=NULL; 

黑色头发:http://heisetoufa.iteye.com/


转载地址:http://heisetoufa.iteye.com/blog/364179

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值