更新时间:2026-10-21 GMT+08:00
分享

操作符

GaussDB数据库兼容除分层查询以外的运算符。

SQL运算符

表1 SQL运算符

Oracle数据库

GaussDB数据库

一元运算符和二元运算符

支持

运算符优先级

支持

算术运算符

表2 算术运算符

Oracle数据库

GaussDB数据库

正负(+-)一元运算符

支持

加减(+-)二元运算符

支持

乘除(*/)二元运算符

支持

COLLATE运算符

表3 COLLATE运算符

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数据库

< =

支持

< >

支持

> =

支持

^ =

支持

! =

不支持,!=中间存在空格时,!会被识别为阶乘。

当比较操作符(<=、<>、>=、^=)中间存在空格时,也可以识别成没有空格进行正常操作。!=中间存在空格时,!会被识别为阶乘,可能会导致结果与预期不一致。

相关文档