运算符
SQL 运算符是指定对一个或多个表达式执行操作的符号。运算符由特殊字符或关键字表示。
运算符优先级
当一个复杂表达式包含多个运算符时,运算符优先级决定了表达式中操作的顺序,例如在表达式 1 + 2 * 3
中,*
的优先级高于 +
,因此表达式被求值为 1 + (2 * 3) = 7
。执行顺序会显著影响最终结果。
运算符具有下表中所示的优先级级别。高优先级的运算符在低优先级的运算符之前进行求值。在下表中,运算符按优先级降序排列,即 1 为最高级别。列在同一表格单元格中的运算符具有相同的优先级,并根据结合性从左到右或从右到左进行求值。
优先级 | 运算符 | 操作 | 结合性 |
---|---|---|---|
1 | . [] :: |
成员访问 元素访问 类型转换 |
从左到右 |
2 | + - ~ |
一元加 一元减 按位非 |
从右到左 |
3 | * / % DIV |
乘法 除法,取模 整数除法 |
从左到右 |
4 | + - || |
加法 减法 连接 |
从左到右 |
5 | << >> >>> |
按位左移 按位右移 无符号按位右移 |
从左到右 |
6 | & | 按位与 | 从左到右 |
7 | ^ | 按位异或 | 从左到右 |
8 | | | 按位或 | 从左到右 |
9 | =, == <>, != <, <= >, >= |
比较运算符 | 从左到右 |
10 | NOT, ! EXISTS |
逻辑非 存在性 |
从右到左 |
11 | BETWEEN IN RLIKE, REGEXP ILIKE LIKE IS [NULL, TRUE, FALSE] IS DISTINCT FROM |
其他谓词 | 从左到右 |
12 | AND | 合取 | 从左到右 |
13 | OR | 析取 | 从左到右 |