oracle中逻辑运算符(not,and,or)及其优先级

本文详细介绍了SQL中的三种逻辑运算符:AND、OR和NOT的使用方法及优先级,并通过具体例子展示了如何运用这些运算符进行复杂条件筛选。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

逻辑运算符

意义

and

双值运算符,如果左右两个条件都为真,则得到的值就为真

or

双值运算符,只要左右两个条件有一个为真,则得到的值就为真

not

单指运算符,如果原条件为真,则得到真,如果元条件为假,反之如果原条件为假,则结果为真

select * from emp where sal > 2000 and job = 'salesman';

 

寻找那些工资高于2000的且职位为销售的职员。

 

select * from emp where job = 'clerk' or deptno = 20;

 

寻找那些工作为CLERK或者所在部门标号为20的职员的列表

 

select * from emp where not (sal > 3000 or sal < 1500);

 

寻找那些工资既不大于3000也不小于1500,也即在1500到3000范围的员工,

相当于:select * from emp where sal between 1500 and 3000;

 oracle中所有运算符的优先级如下:

运算符

级别

算术运算符(即‘+’,‘-’,‘*’,‘/’)

1

连接运算符(即‘||’)

2

比较运算符(即‘>’,‘>=’,‘<’,‘<=’,‘<>’)

3

Is [not] null,[not] like,[not] in

4

[not] between-and

5

not

6

and

7

or

8

通常使用()可以改变运算符的优先级。

 

需要注意的是and的优先级要优于or,也就是说下面的语句

select * from emp where sal < 1500 or sal >= 2000 and job = 'analyst';

 

等价于:select * from emp where sal < 1500 or (sal >= 2000 and job = 'analyst');

 

而不是你所预期的

select * from emp where (sal < 1500 or sal >= 2000) and job = 'analyst';

 

一般即使我们要表达第一个语句所要表达的意思,为了避免误解,都不采取第一种写法,而是用括号来表明我们要先算后面的部分。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

#慧#

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值