运算符
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 | 析取 | 从左到右 |