# 操作符
GaussDB数据库兼容除分层查询以外的运算符。
#### SQL运算符
表1SQL运算符 
| Oracle数据库     | GaussDB数据库 |
|:---|:---|
| 一元运算符和二元运算符 | 支持        |
| 运算符优先级       | 支持       |
   
#### 算术运算符
表2算术运算符 
| Oracle数据库      | GaussDB数据库 |
|:---|:---|
| 正负（+-）一元运算符  | 支持        |
| 加减（+-）二元运算符   | 支持        |
| 乘除（\*/）二元运算符 | 支持     |
   
#### COLLATE运算符
表3COLLATE运算符 
| Oracle数据库              | GaussDB数据库 |
|:---|:---|
| COLLATE collation_name | 支持         |
   
#### 连接运算符
表4连接运算符 
| Oracle数据库 | GaussDB数据库 | 差异                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|
| \|\|      | 支持，有差异。    | 对于非法字符的拼接，GaussDB不会检查字符的合法性，直接拼接所有字符；而Oracle若检测到非法字符，会忽略该字符。 示例： ``` -- GaussDB gaussdb=# SET a_format_version='10c'; SET gaussdb=# SET a_format_dev_version='s2'; SET gaussdb=# SELECT dump(CHR(239) || 'test') FROM dual; dump ----------------------------------- Typ=25 Len=5: 239,116,101,115,116 (1 row) -- Oracle SQL> SELECT dump(CHR(239) || 'test') FROM dual; dump(CHR(239)||'TEST') ----------------------------------------------- Typ=1 Len=4: 116,101,115,116 ``` |
   
#### 分层查询运算符
表5分层查询运算符 
| Oracle数据库     | GaussDB数据库 | 差异                                                                     |
|:---|:---|:---|
| prior           | 支持，有差异。  | GaussDB中仅支持对普通列调用，不支持对函数等调用。                                          |
| connect_by_root | 支持，有差异。    | GaussDB中，connect_by_root调用时，用括号修饰操作值时，行为与Oracle一致；不使用括号时，仅支持对普通列调用此运算符。 |
   
#### 集合运算符
表6集合运算符 
| Oracle数据库    | GaussDB数据库 |
|:---|:---|
| union     | 支持         |
| union all  | 支持        |
| intersect | 支持         |
| minus        | 支持         |
   
#### 多集合运算符
表7多集合运算符 
| Oracle数据库          | GaussDB数据库 |
|:---|:---|
| multiset except    | 支持        |
| multiset intersect | 支持        |
| multiset union     | 支持        |
   
#### 用户自定义运算符
表8用户自定义运算符 
| Oracle数据库      | GaussDB数据库 |
|:---|:---|
| CREATE OPERATOR | 不支持         |
   
#### 比较操作符
| Oracle数据库 | GaussDB数据库             |
|:---|:---|
| \< =        | 支持                    |
| \< \>     | 支持                     |
| \> =       | 支持                       |
| \^ =     | 支持                      |
| ! =        | 不支持，!=中间存在空格时，!会被识别为阶乘。 |
   
当比较操作符（\<=、\<\>、\>=、\^=）中间存在空格时，也可以识别成没有空格进行正常操作。!=中间存在空格时，!会被识别为阶乘，可能会导致结果与预期不一致。
