运算符优先级
📄字数 501
👁️阅读量 加载中...
XuguDB中提供的运算符优先级总览如下,运算符优先级由高到低,同一层级运算符优先级相同。优先级通常表现为:算术运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符。
| 运算符 | 描述 |
|---|---|
| . | 表/列名称分隔符 |
| :: | 类型转换 |
| [] | 数组下标访问 |
| + - ~ | 一元加法、一元减法、按位非 |
| ^ | 指数运算,详情见^(按位异或) |
| * / | 乘法、除法,详情见算术运算符 |
| + - | 加法、减法,详情见算术运算符 |
| 其他复杂运算符 | 如位运算符(<< >> & |) 连接运算符(||) JSON运算符 几何运算符等其他复杂运算符 |
| > < =(比较) >= <= <> | 比较运算符 |
| NOT | 逻辑运算符,逻辑否定 |
| AND | 逻辑运算符,逻辑与 |
| OR | 逻辑运算符,逻辑或 |
| =(赋值) | 赋值运算符 |
提示
=在SQL里充当两种“语法角色”(比较运算和赋值运算),两者通过语法上下文进行区分。
对于日期时间运算符中的+,-,*,/运算符其优先级同算术运算符,<,=,>=,<=,<>运算符优先级同比较运算符。对于几何运算符中的+,-,*,/,<,=,>=,<=,<>也同样如此。除此之外,几何运算符中的<<,>>运算符优先级同位运算符中的<<,>>。
在其他复杂运算符中,大多数运算符具有相同优先级,且是左结合的。运算符的优先级和结合性硬编码在语法文件中,若想要改变默认的解析顺序,必须使用括号()来明确表达式的计算顺序。例如:
sql
SQL> select 1 + 1 * 2;
+-------+
| EXPR1 |
+-------+
| 3 |
+-------+
SQL> select (1 + 1) * 2;
+-------+
| EXPR1 |
+-------+
| 4 |
+-------+