跳到主要内容

运算符优先级

seekdb 目前支持算术运算符、位运算符、比较运算符、逻辑运算符、日期时间运算符、字符连接运算符和排序规则运算符等。

运算符优先级概览

运算符从最高优先级到最低优先级如下所示。同一行上的运算符具有相同的优先级。

COLLATE
!
- (一元减), ~ (一元位反转)
^
*, /, DIV, %, MOD
-, +
<<, >>
&
|
= (比较), <=>, >=, >, <=, <, <>, !=, IN
BETWEEN,
NOT
AND, &&
XOR
OR, ||
= (赋值), :=

说明

  • = 的优先级取决于它是用作比较运算符 (=) 还是用作赋值运算符 (=)。当用作比较运算符时,它具有与 <=>>=><=<<>!= 相同的优先级;当用作赋值运算符时,它具有与 := 相同的优先级。

  • 如果在表达式中出现相同优先级的运算符,从左到右进行计算,但赋值运算从右到左。

  • 如下运算符的优先级和含义取决于 SQL 模式:

    • 默认情况下,|| 是逻辑 OR 运算符。启用 PIPES_AS_CONCAT 后,|| 是字符串连接,优先级在 ^ 和一元运算符之间。

    • 默认情况下, 具有比 NOT 更高的优先级。启用 HIGH_NOT_PRECEDENCE 后, 并且不具有相同的优先级。