sqlMySQL的运算符主要包括算术运算符、逻辑运算符、比价运算符和位运算符
算术运算符
MySQL支持的算术运算符包括加、减、乘、除、模运算
| 运算符 | 作用 |
|---|---|
| + | 加 |
| - | 减 |
| * | 乘 |
| /,DIV | 除 |
| %,MOD | 模运算 |
+ 返回一个或多个值的和
- 返回一个值减去另一个值
* 返回一个或多个值的乘积
/ 一个值除以另一个值的商
% 一个值除以另一个值的余数
除法和模运算如果除数为零,属于非法运算,返回值为NULL
select 10/0,100%0;

比较运算符
比价运算符用来比较左右两边的值,比较结果为真,返回1,为假返回0,比较结果不确定放回NULL
| 运算符 | 作用 |
|---|---|
| = | 等于 |
| != 或<> | 不等于 |
| <=> | NULL安全的等于 |
| < | 小于 |
| <= | 小于等于 |
| > | 大于 |
| >= | 大于等于 |
| BETWEEN | 存在于指定范围 |
| IN | 存在于指定集合 |
| IS NULL | 查询结果集是否为NULL |
| IS NOT NULL | 查询结果集是否部位NULL |
| LIKE | 通配符匹配 |
| REGEXP或RLIKE | 正则表达式匹配 |
比较运算符可以用于比较数字、字符串和表达式。数字作为浮点数比较,字符串以不区分大小写的方式比较。
=运算符用于比较两边的操作数是否相等,相等则返回1,否则返回0,NULL用于=比较
select 1=1,1=0,NULL=NULL;

<>或!=运算符,和=相反,两边的操作数不同返回1,相等返回0,NULL不等用<>比较
select 1<>1,1<>0,NULL<>NULL;

<=>NULL安全的 运算符,和=类似,两边的操作数相等时返回1,两边的操作数不相等时返回0,与=不同的是,即使两边的操作数都为NULL也可以正确比较。
select 1<=>1,1<=>0,NULL<=>NULL;

<运算符,当左侧的操作数小于右侧的操作数时,返回1,否则返回0
select 0<1,1<1,1<0;

<=运算符,当左侧的操作符小于等于右侧的操作符时返回1,否则返回0
select 1<=1,1<=0,1<=0,'a'<='b';

>运算符,当左侧操作数大于右侧操作数时,返回1,否则返回0
select 1>1,1>0,'a'>'b','c'>'b';

>=操作符,当左侧操作符大于等于右侧操作符时,返回1,否则返回0
select 1>=1,1>=0,0>=1,'c'>='b';

BETWEEN操作符的格式为a BETWEEN min AND max,如果a大于等于min并且小于等于max,则返回1,否则返回0,当a、min、max类型相同时,等价于a >= min AND a <=max,当类型不同时,hi遵循类型转换原则,先做类型转换,在进行比较。
select 10 BETWEEN 10 AND 20,9 BETWEEN 10 AND 20;

IN运算符的格式为a in (value1,values2,...,valuen),如果a存在于列表中则返回1,否则返回0
select 1 in (1,2,3), 't' in ('t','a',1,'b'),0 in (1,2);

IS NULL的使用格式为a IS NULL,如果a的值为NULL,返回1,否则返回0
select 1 IS NULL,NULL iS NULL;

IS NOT NULL的使用格式为a IS NOT NULL,和IS NULL相反,如果a的值不为NULL则返回1,否则返回0
select 1 IS NOT NULL,NULL IS NOT NULL;

LIKE运算符的使用格式为a LIKE %123%,如果a中包含123,返回1,否则返回0
select 123456 LIKE '%123%',123456 LIKE '123%',123456 LIKE '%321%';

REGEXP运算符的使用格式为str REGEXP str_pat当str中含有与str_pat相匹配的字符串时,返回1,否则返回0
select 'abcdef' REGEXP 'ab','abgfty' REGEXP 'k';

逻辑运算符
逻辑运算符又称布尔运算符,用来判断表达式的真假,MySQL支持4种逻辑运算符
| 运算符 | 作用 |
|---|---|
| NOT或!· | 逻辑非 |
| AND或&& | 逻辑与 |
| OR 或 || | 逻辑或 |
| XOR | 逻辑异或 |
NOT或!表示逻辑非。返回结果和操作数相反,如果操作数为假则返回1,如果操作数为真则返回0,NOT NULL的返回值为NULL
select NOT 0,NOT 1,NOT NULL;

AND或&&表示逻辑与,当操作数中不存在非0或非NULL的值时,返回1,当一个或多个操作数为0时,返回0,当操作数中有NULL时返回NULL。
select 1 && 2 && 4,1 && 0 && 2,1 && NULL && 2;

OR或||表示逻辑或,当两个操作数均为非 NULL 值时,如有任意一个操作数为非零值,则结果为 1,否则结果为 0。当有一个操作数为 NULL时,如另一个操作数为非零值,则结果为 1,否则结果为 NULL。假如两个操作数均为 NULL,则所得结果为 NULL
select 1 || 0 || NULL,0 || 0 || 0, NULL || 0 || NULL,NULL || NULL || NULL;

XOR表示逻辑异或,当任意一个操作数为NULL时,返回NULL,当两个操作数都不为NULL时,如果两个操作数真假相异返回1,否则返回0
select NULL XOR 1,NULL XOR 0,1 XOR 0,1 XOR 1,0 XOR 0;

位运算符
位运算是将给定的操作数转化为二进制后,对各个操作数每一位都进行指定的逻辑运算,得到的二进制结果转换为十进制数后就是位运算的结果
| 运算符 | 作用 |
|---|---|
| & | 位与(AND) |
| | | 位或(OR) |
| ^ | 位异或(XOR) |
| ~ | 位取反 |
| >> | 位右移 |
| << | 位左移 |
MySQL运算符优先级
| 优先级 | 运算符 |
|---|---|
| 1 | := |
| 2 | || OR XOR |
| 3 | &&, AND |
| 4 | NOT |
| 5 | BETWEEN, CASE, WHEN, THEN, ELSE |
| 6 | =, <=>,> , >=, <, <=,<>, !=,IS,LIKE,REGEXP,IN |
| 7 | | |
| 8 | & |
| 9 | <<, >> |
| 10 | -,+ |
| 11 | * , /, DIV, %, MOD |
| 12 | ^ |
| 13 | -,~ |
| 14 | ! |
本文深入解析MySQL中的算术、逻辑、比较及位运算符,详细阐述了每种运算符的作用、使用场景及其优先级,是MySQL数据库学习者不可多得的参考资料。
1859

被折叠的 条评论
为什么被折叠?



