
# 操作符
GaussDB数据库兼容除分层查询以外的运算符。
#### 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一致；不使用括号时，仅支持对普通列调用此运算符。 |
   
#### 集合运算符
表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不支持自定义功能评估函数。  - GaussDB和Oracle可选参数差异较大。GaussDB具体请参考《开发指南》中"SQL参考 \> SQL语法 \> C \> CREATE OPERATOR"章节的参数说明部分。   |
   
#### 比较操作符
| 序号 | Oracle数据库 | GaussDB数据库              |
|:---|:---|:---|
| 1  | \< =      | 支持                      |
| 2  | \< \>     | 支持                      |
| 3  | \> =      | 支持                      |
| 4  | \^ =      | 支持                      |
| 5  | ! =       | 不支持，!=中间存在空格时，!会被识别为阶乘。 |
   
当比较操作符（\<=、\<\>、\>=、\^=）中间存在空格时，也可以识别成没有空格进行正常操作。!=中间存在空格时，!会被识别为阶乘，可能会导致结果与预期不一致。
