简介:逻辑运算符主要判断表达式的真假,返回值为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 。