MySQL 函数和运算符:运算符
跳到导航
跳到搜索
关于
Name | Description |
---|---|
& | 按位“AND” |
> | 大于运算符 |
>> | 右移 |
>= | 大于或等于运算符 |
< | 小于运算符 |
<>, != | 不等于运算符 |
<< | 左移 |
<= | 小于或等于运算符 |
<=> | NULL 安全等于运算符 |
%, MOD | Modulo operator |
* | Multiplication operator |
+ | Addition operator |
- | Minus operator |
- | 更改参数的符号 |
-> | 评估路径后从 JSON 列返回值;等效于 JSON_EXTRACT()。 |
->> | (5.7.13 引入) 评估路径并取消引用结果后,从 JSON 列返回值;等效于 JSON_UNQUOTE(JSON_EXTRACT())。 |
/ | 除法操作符 |
:= | 赋值 |
= | 分配一个值(作为SET语句的一部分或UPDATE语句的SET子句的一部分) |
= | 等于运算符 |
^ | 位运算“异或” |
AND, && | 逻辑“AND” |
BETWEEN...AND... | 值是否在值范围内 |
BINARY | 将字符串转换为二进制字符串 |
CASE | Case 运算符【?】 |
DIV | 整数除法 |
IN() | 一个值是否在一组值内 |
IS | 针对布尔值测试值 |
IS NOT | 针对布尔值测试值 |
IS NOT NULL | 非空值测试 |
IS NULL | 空值测试 |
LIKE | 简单模式匹配 |
NOT, ! | Negates value |
NOT BETWEEN ... AND ... | 值是否不在值范围内 |
NOT IN() | 一个值是否不在一组值内 |
NOT LIKE | 否定简单模式匹配 |
NOT REGEXP | 非“REGEXP” |
OR, || | 逻辑“OR” |
REGEXP | 字符串是否匹配正则表达式 |
RLIKE | 字符串是否匹配正则表达式 |
SOUNDS LIKE | Compare sounds【???】 |
XOR | 逻辑“XOR” |
| | 按位“或” |
~ | 按位“取反” |
运算符优先级
运算符优先级:(由高到低,同行同级)
INTERVAL
BINARY, COLLATE
!
- (一元减法), ~ (一元按位取反)
^
*, /, DIV, %, MOD
-, +
<<, >>
&
|
= (比较), <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN
BETWEEN, CASE, WHEN, THEN, ELSE
NOT
AND, &&
XOR
OR, ||
= (赋值), :=
- “=”的优先级取决于它是用作比较运算符(=)还是用作赋值运算符(=)。
一些运算符的优先级和含义取决于 SQL 模式:
- 默认情况下,“||”是逻辑OR运算符。启用“PIPES_AS_CONCAT”时【???】,“||”是字符串连接,优先级在“^”和一元运算符之间。
- 默认情况下,“!”的优先级高于“NOT”。启用“HIGH_NOT_PRECEDENCE”时【???】,“!”和“NOT”具有相同的优先级。
比较函数和运算符
Name | Description |
---|---|
> | 大于运算符 |
>= | 大于或等于运算符 |
< | 少于运算符 |
<>, != | 不等于运算符 |
<= | 小于或等于运算符 |
<=> | NULL 安全等于运算符【类似于“=”运算符。但是,如果两个操作数均为NULL,则返回 1 而不是 NULL,如果一个操作数为 NULL 则返回 0 而不是 NULL】 |
= | 等于运算符 |
BETWEEN ... AND ... | 值是否在值范围内 |
COALESCE() | 返回第一个非 NULL 参数【如果没有非 NULL 值,则返回 NULL】 |
GREATEST() | 返回最大参数【具有两个或更多参数,返回最大(最大值)参数】【使用与“LEAST()”相同的规则比较参数】 |
IN() | 一个值是否在一组值内 |
INTERVAL() | 返回小于第一个参数的参数的索引【对于“INTERVAL(N,N1,N2,N3,...)”,如果 N<N1 则返回0,如果 N<N2 则返回1,以此类推;如果 N 为 NULL则返回 -1。所有参数均视为整数。】 |
IS | 针对布尔值测试值 |
IS NOT | 针对布尔值测试值 |
IS NOT NULL | 非空值测试 |
IS NULL | 空值测试 |
ISNULL() | 测试参数是否为 NULL |
LEAST() | 返回最小的参数【具有两个或更多参数,返回最小(最小值)参数】【使用与“GREATEST()”相同的规则比较参数】 |
LIKE | 简单模式匹配 |
NOT BETWEEN ... AND ... | 值是否不在值范围内 |
NOT IN() | 一个值是否不在一组值内 |
NOT LIKE | 否定简单模式匹配 |
STRCMP() | 比较两个字符串 |
- 比较操作得出的值为1(TRUE),0(FALSE)或NULL。这些操作适用于数字和字符串。字符串会自动转换为数字,数字会根据需要转换为字符串。
逻辑运算符
Name | Description |
---|---|
AND, && | 逻辑“与” |
NOT, ! | 逻辑“非” |
OR, || | 逻辑“或” |
XOR | 逻辑“异或”【简单来说:“相同为 0,相异为 1”】 |
- 在 SQL 中,所有逻辑运算符的求值结果均为 TRUE,FALSE 或 NULL(UNKNOWN)。在 MySQL 中,这些实现为 1(TRUE),0(FALSE) 和 NULL。尽管其中有些服务器可能会返回 TRUE 的任何非零值,但大多数情况对于不同的 SQL 数据库服务器来说是常见的。
- “XOR”:如果两个操作数均为 NULL,则返回 NULL。对于非 NULL 操作数,如果奇数个操作数不为零,则求值为 1,否则返回0。
mysql> SELECT 1 XOR 1; -> 0 mysql> SELECT 1 XOR 0; -> 1 mysql> SELECT 1 XOR NULL; -> NULL mysql> SELECT 1 XOR 1 XOR 1; -> 1
- “a XOR b”在 math 上等于“(a AND (NOT b)) OR ((NOT a) and b)”。
赋值运算符
Name | Description |
---|---|
:= | 赋值 |
= | 分配一个值(作为SET语句的一部分或UPDATE语句的SET子句的一部分) |
- “:=”运算符永远不会解释为比较运算符。
- 在“UPDATE”语句的“SET”子句中,“=”也充当赋值运算符(与“:=”相同)。