更新时间:2024-11-11 GMT+08:00
分享

操作符

GaussDB数据库基本兼容Oracle数据库的运算符。

SQL运算符

表1 SQL运算符

序号

Oracle数据库

GaussDB数据库

1

一元运算符和二元运算符

支持

2

运算符优先级

支持

算术运算符

表2 算术运算符

序号

Oracle数据库

GaussDB数据库

1

正负(+-)一元运算符

支持

2

加减(+-)二元运算符

支持

3

乘除(*/)二元运算符

支持

COLLATE运算符

表3 COLLATE运算符

序号

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

! =

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

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

相关文档