运算符一般用于连接运算数或参数之类的单个数据项且返回结果。从语法上讲,运算符出现在运算数之前、之后或两个运算数之间均可。一般用特殊字符或关键字表示运算符,例如,除法运算符用斜杠(/)表示。本章讨论非逻辑(非布尔)运算符,这些运算符本身不能用作查询或子查询的 WHEREHAVING 条件。

本章将详细介绍以下运算符:

一元和二元运算符

运算符可分为两大类:

  • 一元运算符:一元运算符仅对一个运算数进行运算。一元运算符常用格式:
  1. 运算符 运算数
  • 二元运算符:二元运算符顾名思义是对两个运算数进行运算。二元运算符常用格式:
  1. 运算数1 运算符 运算数2

其他具有特殊格式的运算符可接受两个以上的运算数。如果为运算符提供了空运算数(NULL), 则结果始终为空。唯一不遵循此规则的是串联(||)运算符。

运算符优先级

优先级会影响 OceanBase 数据库在同一表达式中计算不同运算符的顺序。在计算包含多个运算符的表达式时,OceanBase 会先计算优先级更高的运算符,然后再计算优先级较低的运算符,优先级相等时,在表达式中从左到右对相等的运算符求值。

下表列出了 SQL 运算符中从高到低的优先级。同一行上列出的运算符具有相同的优先级。

运算符运算方式
+、-(作为一元运算符)、PRIOR、CONNECT_BY_ROOT正号、负号、层次结构中的位置。
*、/乘法、除法。
+、-(作为二元运算符)、||加、减、串联。
条件表达式在数据库评估完运算符后再进行评估详情请参阅文档 条件优先

在以下示例中,由于乘法的优先级高于加法,因此数据库首先将 2 乘以 3,然后再将结果加到 1。

  1. 1+2*3

您也可以在表达式中使用括号来限制运算符优先级。OceanBase 将先对括号内的表达式求值,再对括号外部的表达式求值。

SQL 还支持集合运算符(UNIONUNION ALLINTERSECTMINUS),集合运算符会合并查询返回的行集,而不是单个数据项。所有集合运算符都具有相同的优先级。