
# 操作符
GaussDB数据库基本兼容Oracle数据库的运算符。
#### SQL运算符
表1SQL运算符 
| 序号 | Oracle数据库   | GaussDB数据库 |
|:---|:---|:---|
| 1  | 一元运算符和二元运算符 | 支持         |
| 2  | 运算符优先级      | 支持         |
   
#### 算术运算符
表2算术运算符 
| 序号 | Oracle数据库    | GaussDB数据库 |
|:---|:---|:---|
| 1  | 正负（+-）一元运算符  | 支持         |
| 2  | 加减（+-）二元运算符  | 支持         |
| 3  | 乘除（\*/）二元运算符 | 支持         |
   
#### COLLATE运算符
表3COLLATE运算符 
| 序号 | Oracle数据库              | GaussDB数据库 |
|:---|:---|:---|
| 1  | COLLATE collation_name | 支持         |
   
#### 连接运算符
表4连接运算符 
| 序号 | Oracle数据库 | GaussDB数据库 |
|:---|:---|:---|
| 1  | \|\|      | 支持         |
   
#### 分层查询运算符
表5分层查询运算符 
| 序号 | Oracle数据库                   | GaussDB数据库 | 差异                                                                      |
|:---|:---|:---|:---|
| 1  | prior                       | 支持，有差异     | GaussDB中仅支持对普通列调用，不支持对函数等调用。                                            |
| 2  | connect_by_root             | 支持，有差异     | GaussDB中，connect_by_root调用时，用括号修饰操作值时，行为与Oracle一致；不使用括号时，仅支持对普通列调用此运算符。 |
| 3  | connect_by_iscycle          | 支持，有差异     | GaussDB中可以单独使用，Oracle中必须搭配NOCYCLE一起使用。                                  |
| 4  | start with，connect by，level | 支持，有差异     | GaussDB中start with，connect by，level可以作为列别名，Oracle不支持。                   |
| 5  | start with                  | 支持，有差异     | GaussDB中start with后面支持空字符查询，查询结果为空，支持对伪列的操作；Oracle会抛出异常。                |
| 6  | connect by                  | 支持，有差异     | GaussDB中connect by支持对NULL值操作，Oracle会抛出异常。                               |
   
#### 集合运算符
表6集合运算符 
| 序号 | Oracle数据库 | GaussDB数据库 |
|:---|:---|:---|
| 1  | union     | 支持         |
| 2  | union all | 支持         |
| 3  | intersect | 支持         |
| 4  | minus     | 支持         |
   
#### 多集合运算符
表7多集合运算符 
| 序号 | Oracle数据库          | GaussDB数据库 |
|:---|:---|:---|
| 1  | multiset except    | 支持         |
| 2  | multiset intersect | 支持         |
| 3  | multiset union     | 支持         |
   
#### 用户自定义运算符
表8用户自定义运算符 
| 序号 | Oracle数据库       | GaussDB数据库 | 差异                                                                                                                                                                                                                                                                                                                                                                                                                                     |
|:---|:---|:---|:---|
| 1  | CREATE OPERATOR | 支持，有差异     | - Oracle中提供的CONTEXT_CLAUSE支持自定义功能评估函数，和GaussDB约束选择性评估函数不同。GaussDB不支持自定义功能评估函数。  - Oracle和GaussDB可选参数差异较大。GaussDB具体请参考《开发指南》中"SQL参考 \> SQL语法 \> C \> CREATE OPERATOR"章节的参数说明部分。   |
   
#### 比较操作符
| 序号 | Oracle数据库 | GaussDB数据库              |
|:---|:---|:---|
| 1  | \< =      | 支持                      |
| 2  | \< \>     | 支持                      |
| 3  | \> =      | 支持                      |
| 4  | \^ =      | 支持                      |
| 5  | ! =       | 不支持，!=中间存在空格时，!会被识别为阶乘。 |
   
当比较操作符（\<=、\<\>、\>=、\^=）中间存在空格时，也可以识别成没有空格进行正常操作。!=中间存在空格时，!会被识别为阶乘，可能会导致结果与预期不一致。
