目录
简介:逻辑运算符主要判断表达式的真假,返回值为1,0,null
其中包含:
逻辑非:not或!
逻辑与:and或&&
逻辑或:or或||
逻辑异或:XOR
1.逻辑非运算
规则:
当给定的值为非0
值时返回
0
;
当给定的值为NULL
时,返回
NULL
。
例:
SELECTNOT1,NOT0,NOT(1+1),NOT!1,NOTNULL;
2.逻辑与
规则:
运算符是当给定的所有值均为非0值,并且都不为
NULL
时,返回1;
当给定的一个值或者多个值为0时则返回
0
;否则返回
NULL
。
SELECT 1 AND -1,0 AND 1,0 AND NULL,1 AND NULL;
SELECT employee_id,last_name
FROM employees
WHERE salary>=10000 AND last_name LIKE '小%';
3.逻辑或
规则:
1.当给定的值都不为NULL
,并且任何一个值为非
0
值时,则返回1
,否则返回
0
;
2.当一个值为NULL
,并且另一个值为非
0
值时,返回
1
,否则返回
NULL
;
3.当两个值都为 NULL时,返回NULL
。
SELECT 1 OR -1,1 OR 0,1 OR NULL,0 || NULL,NULL || NULL;
注意:
1.OR可以和AND一起使用,但是在使用时要注意两者的优先级
2.由于AND的优先级高于OR,因此先
3.对AND两边的操作数进行操作,再与OR中的操作数结合。
4.逻辑异或:
规则:
1.当给定的值中任意一个值为NULL
时,则返回
NULL
;
2.如果两个非NULL的值都是
0
或者都不等于
0
时,则返回
0
;
3.如果一个值为0
,另一个值不为
0
时,则返回
1
。
select 1 XOR -1,1 XOR 0,0 XOR 0,1 XOR NULL,1 XOR 1 XOR 1,0 XOR 0 XOR 0
5.位运算符
&按位与
|按位或
^按位异或
~按位取反
>>按位右移
<<按位左移
例:按位与
SELECT 1&10,20&30;
1
的二进制数为
0001
,
10
的二进制数为
1010
,所以
1&10
的结果为
0000
,对应的十进制数为
0
。
20
的二进制数为10100
,
30
的二进制数为
11110
,所以
20&30
的结果为
10100
,对应的十进制数为
20
。(一位一位比较运算)
例2:按位或
SELECT 1|10 , 20|30;
1
的二进制数为
0001
,
10
的二进制数为
1010
,所以
1|10
的结果为
1011
,对应的十进制数为
11
。
20
的二进制数为10100
,
30
的二进制数为
11110
,所以
20|30
的结果为
11110
,对应的十进制数为
30
。
例3:按位异或
SELECT 1^10 , 20^30;
例4:按位取反
SELECT 10 & ~1;
现在以按位与计算为例:
例5:按位右移:
简介:将给定的值的二进制数的所有位右移指定的位数。右移指定的位数后,右边低位的数值被移出并丢弃,左边高位空出的位置用0
补齐。
SELECT 1>>2,4>>2;
解释:1的二进制数为00000001,右移2位为00000000,对应的十进制数为0。
4的二进制数为00000100,右移2位为00000001,对应的十进制数为1。
例6:按位左移
简介:将给定的值的二进制数的所有位左移指定的位数。左移指定的位数后,左边高位的数值被移出并丢弃,右边低位空出的位置用0
补齐。
SELECT 1<<2,4<<2;
1
的二进制数为
00000001
,左移两位为
00000100
,对应的十进制数为
4
。
4
的二进制数为
00000100
,左移两位为00010000
,对应的十进制数为
16
。