“MySQL 函数和运算符:运算符”的版本间差异
跳到导航
跳到搜索
(→关于) |
小无编辑摘要 |
||
| 第1行: | 第1行: | ||
[[category: | [[category:MySQL文档]] | ||
== 关于 == | == 关于 == | ||
2023年3月31日 (五) 23:09的最新版本
关于
| 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”子句中,“=”也充当赋值运算符(与“:=”相同)。