运算符一般用于连接运算数或参数之类的单个数据项且返回结果。从语法上讲,运算符出现在运算数之前、之后或两个运算数之间均可。一般用特殊字符或关键字表示运算符,例如,除法运算符用斜杠(/)表示。本章讨论非逻辑(非布尔)运算符,这些运算符本身不能用作查询或子查询的 WHERE
或 HAVING
条件。
本章将详细介绍以下运算符:
一元和二元运算符
运算符可分为两大类:
- 一元运算符:一元运算符仅对一个运算数进行运算。一元运算符常用格式:
运算符 运算数
- 二元运算符:二元运算符顾名思义是对两个运算数进行运算。二元运算符常用格式:
运算数1 运算符 运算数2
其他具有特殊格式的运算符可接受两个以上的运算数。如果为运算符提供了空运算数(NULL), 则结果始终为空。唯一不遵循此规则的是串联(||)运算符。
运算符优先级
优先级会影响 OceanBase 数据库在同一表达式中计算不同运算符的顺序。在计算包含多个运算符的表达式时,OceanBase 会先计算优先级更高的运算符,然后再计算优先级较低的运算符,优先级相等时,在表达式中从左到右对相等的运算符求值。
下表列出了 SQL 运算符中从高到低的优先级。同一行上列出的运算符具有相同的优先级。
运算符 | 运算方式 |
+、-(作为一元运算符)、PRIOR、CONNECT_BY_ROOT | 正号、负号、层次结构中的位置。 |
*、/ | 乘法、除法。 |
+、-(作为二元运算符)、|| | 加、减、串联。 |
条件表达式在数据库评估完运算符后再进行评估 | 详情请参阅文档 条件优先。 |
在以下示例中,由于乘法的优先级高于加法,因此数据库首先将 2 乘以 3,然后再将结果加到 1。
1+2*3
您也可以在表达式中使用括号来限制运算符优先级。OceanBase 将先对括号内的表达式求值,再对括号外部的表达式求值。
SQL 还支持集合运算符(UNION
、UNION ALL
、INTERSECT
和 MINUS
),集合运算符会合并查询返回的行集,而不是单个数据项。所有集合运算符都具有相同的优先级。