MYsql运算符

本文介绍了MySQL中的四种主要运算符:算术运算符用于数学计算;正则表达式用于复杂文本匹配;逻辑运算符包括AND, OR, NOT,用于布尔逻辑判断;位运算符则在二进制级别上进行操作,常用于数据库底层优化。" 51322148,1350347,iText PDF处理中文标点异常解决,"['PDF生成', 'iText库', '中文排版', '字符处理']

一:算术运算符:

        运算符  描述    

运算符
运算符     描述    表达式形式
>大于     x1>x2
<小于x1<x2

=

<=>

等于

x1=x2

x1<=>x2

!=(<>)不等于

x1!=x2

x1<>x2

>=大于等于x1>=x2
<=小于等于x1<=x2
between and存在指定范围x1 between m and n
is null为空x1 is null
in存在指定集合内x1 in (value1,value2,value3)
like通配符匹配x1 like expression
regexp正则表达式匹配x1 regexp regularepression


二:正则表达式


模式字符含义
^匹配字符串开始部分
$匹配字符串结束部分
.匹配字符串中的任意一个
[字符集合]匹配字符集合中的任意一个字符
[^字符集合]匹配字符集合外的任意一个字符
str1|str2|str3匹配str1,str2,str3中的任意一个字符串
*匹配字符串,包含0个和1个
+匹配字符串,包含一个
字符串(n)字符串出现n次
字符串(m,n)字符串至少出现m次,最多n次

三:逻辑运算符

    

运算符描述表达式形式
and(&&)x1 and x2
or(||)x1 or x2
not(!)not x1
xor异或x1 xor x2

四:位运算符 

运算符描述表达式形式
&x1&x2
|x1|x2
~按位取反~x1
^按位异或x1^x2
<<按位左移x1<<x2
>>按位右移x1>>x2

<think> 我们拥有多个引用片段,其中引用[3]提供了最详细的MySQL运算符优先级列表。根据用户需求,我们需要系统介绍MySQL运算符优先级。 步骤: 1. 先总体说明运算符优先级的作用和重要性(参考引用[2]和引用[3]的开头部分)。 2. 按照优先级从高到低的顺序列出运算符(引用[3]提供了由低到高的顺序,但通常我们习惯从高到低说明,因此需要反转)。 3. 解释一些容易混淆的运算符优先级问题,并举例说明(引用[1]中有一个例子:3>2>=1 和 3>2>1)。 4. 强调圆括号可以改变优先级(引用[3]提到)。 5. 最后可以总结并给出编写SQL时的建议。 注意:引用[3]的列表是从低到高(数字1代表最低,15代表最高),所以我们要反过来,从最高优先级开始。 最高优先级(15):`!`(逻辑非)、`~`(位反转)、`-`(负号) 然后依次递减: 14:`^` 13:`*`、`/`、`%` 12:`-`(减号)、`+` 11:`<<`、`>>` 10:`&` 9:`|` 8:比较运算符(`=`, `<=>`, `>=`, `>`, `<=`, `<`, `<>`, `!=`, `IS`, `LIKE`, `REGEXP`, `IN`) 7:`BETWEEN`, `CASE`, `WHEN`, `THEN`, `ELSE` 6:`NOT` 5:`&&`, `AND` 4:`XOR` 3:`||`, `OR` 2:`:=`(赋值运算符,但在SELECT语句中一般不用,注意在SET语句中) 1:`=`(赋值运算,但在MySQL中,在SET语句或UPDATE语句的SET子句中) 但是,注意引用[3]中标注的数字是“由低到高”的顺序,所以数字1是最低优先级,15是最高优先级。因此,在介绍时,我们从15开始向下介绍。 另外,引用[1]中的例子: SELECT 3>2>=1; --> 1 (true) SELECT 3>2>1; --> 0 (false) 这是因为,第一个表达式相当于 (3>2) >= 1,而 (3>2)的结果是1(true),然后1>=1为true(1)。 第二个表达式相当于 (3>2)>1,3>2为1,然后1>1为false(0)。 因此,在介绍过程中,我们可以用这个例子来说明比较运算符的优先级相同,从左到右计算。 根据引用[4],我们还可以列出比较运算符和逻辑运算符,但优先级已经在引用[3]中给出。 回答结构: 1. 引言:运算符优先级的重要性(避免逻辑错误,编写清晰高效的SQL)。 2. 优先级列表(从高到低)以及简要说明。 3. 注意事项:相同优先级从左到右,圆括号的使用。 4. 示例说明(引用[1]的例子)。 5. 总结建议。 注意:MySQL中有些运算符有多个含义(比如`-`可以是负号也可以是减号),但优先级不同。 另外,赋值运算符在普通查询中不常用,但在变量赋值时需要注意。 由于用户要求用中文回答,且需要生成相关问题,我们在最后生成相关问题。 同时,在回答中引用末尾自然添加引用标识。 </think> ### MySQL运算符优先级详解 MySQL运算符优先级决定了表达式中各运算符的计算顺序,对编写正确的SQL语句至关重要。以下是详细的优先级规则(**从高到低**排列): 1. **最高优先级运算符**: - `!`(逻辑非) - `~`(位反转) - `-`(负号,如`-5`) - 例如:`WHERE !active OR ~flag`[^3][^4] 2. **指数运算符**: - `^`(位异或) - 例如:`SELECT 6 ^ 3; -- 结果为5`[^3] 3. **乘除模运算符**: - `*`(乘)、`/`(除)、`%`(取模) - 例如:`SELECT 10 % 3 * 2; -- 结果为2`[^3] 4. **加减运算符**: - `+`(加)、`-`(减) - 例如:`SELECT 5 - 3 + 1; -- 结果为3`[^3] 5. **位移运算符**: - `<<`(左移)、`>>`(右移) - 例如:`SELECT 4 << 1; -- 结果为8`[^3] 6. **按位与**: - `&`(位与) - 例如:`SELECT 3 & 6; -- 结果为2`[^3] 7. **按位或**: - `|`(位或) - 例如:`SELECT 3 | 6; -- 结果为7`[^3] 8. **比较运算符**: - `=`, `<=>`, `>`, `>=`, `<`, `<=`, `<>`, `!=`, `IS`, `LIKE`, `REGEXP`, `IN` - **同级从左向右计算**:`SELECT 3>2>=1; -- 1 (等价于(3>2)>=1 → 1>=1)` `SELECT 3>2>1; -- 0 (等价于(3>2)>1 → 1>1)`[^1][^3] 9. **特殊范围运算符**: - `BETWEEN`, `CASE`, `WHEN`, `THEN`, `ELSE` - 例如:`WHERE price BETWEEN 10 AND 20`[^3] 10. **逻辑非**: - `NOT` - 例如:`WHERE NOT active`[^3] 11. **逻辑与**: - `&&` 或 `AND` - 例如:`WHERE active AND verified`[^3][^4] 12. **逻辑异或**: - `XOR` - 例如:`WHERE active XOR verified`[^3] 13. **逻辑或**: - `||` 或 `OR` - 例如:`WHERE active OR admin`[^3][^4] 14. **最低优先级**: - `:=`(赋值)、`=`(赋值) - 主要用于变量赋值:`SET @var = 10;`[^3] ### ️ 关键注意事项 1. **同级运算符**:相同优先级的运算符按**从左到右**顺序计算[^1][^3] 2. **圆括号优先**:`()`可强制改变计算顺序 ```sql SELECT (1+2)*3; -- 结果为9(不加括号则为7) ``` 3. **NULL处理**:涉及`NULL`的比较可能返回`NULL`(未知状态)[^4] 4. **特殊比较**: - `<=>` 可比较`NULL`值:`SELECT NULL<=>NULL; -- 1`[^4] - `<>`与`!=`功能相同 > ⚠️ 实际开发建议:**多用圆括号明确优先级**,避免依赖记忆顺序,尤其在组合`AND/OR`时: > ```sql > WHERE (active=1 OR admin=1) AND deleted=0 -- 正确逻辑 > ``` 理解运算符优先级可显著减少逻辑错误,提升SQL语句的清晰度和执行效率[^2]。 --- ####
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值