文章目录
- 算术运算符
- 比较运算符
- 等于运算符
- 安全等于运算符
- NULL值判断
- LIKE运算符
- 逻辑运算符
- 位运算符
- 运算符的优先级
在MySQL中,运算符是指在执行特定算术或逻辑操作时用到的符号。常用的运算符有算术运算符、比较运算符、逻辑运算符、位运算符等。
算术运算符
算术运算符主要用于各类数值的运算。
运算符 | 作用 |
---|---|
+ | 加法运算 |
- | 减法运算 |
* | 乘法运算 |
/ | 除法运算,返回商 |
% | 求余运算,返回余数 |
除法运算中的除数不能为0,否则返回结果是NULL。
比较运算符
一个比较运算符的结果总是1、0或NULL。
运算符 | 作用 |
---|---|
= | 等于 |
<=> | 安全等于(可以比较NULL) |
<>(!=) | 不等于 |
<= | 小于或等于 |
>= | 大于或等于 |
< | 小于 |
> | 大于 |
IS NULL | 判断一个值是否为NULL |
IS NOT NULL | 判断一个值是否不为NULL |
LEAST | 在有两个或多个参数时,返回最小值 |
GREATEST | 在有两个或多个参数时,返回最大值 |
BETWEEN AND | 判断一个值是否落在两个值之间 |
ISNULL | 与IS NULL相同 |
IN | 判断一个值是IN列表中的任意一个值 |
NOT IN | 判断一个值不是IN列表中的任意一个值 |
LIKE | 通配符匹配 |
REGEXP | 正则表达式匹配 |
等于运算符
- 若有一个或两个参数是NULL,则比较运算符的结果为NULL
- 若同一个比较运算中的两个参数都是字符串,则按照字符串进行比较
- 若两个参数均为整数,则按照整数进行比较
- 若一个字符串和一个数字进行比较,则MySQL可以自动将字符串转换为数字
安全等于运算符
它具备等于运算符的所有功能,不同的是它可以用来判断NULL值。
两个操作数均为NULL时,返回值为1;一个操作数为NULL时,返回值为0。
NULL值判断
IS NULL或ISNULL用来检验一个值是否为NULL,如果为NULL,返回值为1,否则返回值为0。
IS NOT NULL用来检验一个值是否非NULL,如果非NULL,返回值为1,否则返回值为0
LIKE运算符
LIKE运算符用来匹配字符串,匹配时可以使用如下两种通配符:
- %:匹配任何数目字符,包括零字符
- _:匹配一个字符
逻辑运算符
运算符 | 作用 |
---|---|
NOT或者! | 逻辑非 |
AND或者&& | 逻辑与 |
OR或者|| | 逻辑或 |
XOR | 逻辑异或 |
逻辑非运算符NOT或!表示当操作数为0时,返回值为1;
当操作数为1时,返回值为0;
当操作数为NULL时,返回值为NULL
select NOT 2, NOT 0, NOT -2, NOT 2+2, NOT NULL;
select !2, !0, !-2, !(2+2), !NULL;
对于逻辑运算符XOR,当任意一个操作数为NULL时,返回值为NULL;
如果两个操作数都是0值或者非0值,则返回值为0;如果一个为0值,另一个为非0值,则返回值为1。
位运算符
位运算符是用来对二进制字节中的位进行测试、位移或者测试处理。
运算符 | 作用 |
---|---|
| | 位或 |
& | 位与 |
^ | 位异或 |
<< | 位左移 |
>> | 位右移 |
~ | 位取反,反转所有比特 |
运算符的优先级
以下列表显示了操作符优先级的由低到高的顺序。排列在同一行的操作符具有相同的优先级。
=(赋值运算):=
||, OR, XOR
&&, AND
NOT
BETWEEN, CASE, WHEN, THEN, ELSE
=(比较运算), <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN
|
&
<<, >>
-, +
*, /, DIV, %, MOD
^
- (符号), ~ (比特反转)
!
BINARY, COLLATE
假如 HIGH_NOT_PRECEDENCE SQL 模式被激活,则 NOT 的优先级同 the ! 操作符相同。
不同运算符的优先级是不同的。一般情况下,级别高的运算符先进行计算,级别相同的,MySQL按照表达式的顺序从左到右依次计算。
当然,在不清楚优先级的情况下,可以使用圆括号来改变优先级,并且这样会使整个过程更加清晰。