MySQL 函数和运算符:运算符

来自Wikioe
跳到导航 跳到搜索


关于

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”子句中,“=”也充当赋值运算符(与“:=”相同)。