Oracle语法兼容对比 Oracle vs AntDB vs Postgresql

1. DDL

create,alter,drop,truncate

2. DML

insert,update,delete

3. DQL

select

4. DCL

grant,revoke,alter password

5. TCL

commit,rollback,savepoint

6. 数据类型

ORACLE AntDB Postgresql
varchar2 varchar2 varchar
char(n) char(n) char(n)
date(日期) date(日期) timestamp(时间日期型)、date(日期)、time(时间)
number(n) number(n) smallint、int、bigint
number(p,n) number(p,n) numeric(p,n)(低效)、float(高效)
clob clob text
blob blob bytea
rownum rownum
rowid rowid ctid

7. 系统函数

原生支持: 原生支持: √;不支持:╳;扩展支持 扩展支持 :○

函数类型 函数名称 ORACLE AntDB Postgresql
数值函数 ABS
  ACOS
  ASIN
  ATAN
  ATAN2
  BITAND
  CEIL
  COS
  COSH
  EXP
  FLOOR
  LN
  LOG
  MOD
  NANVL
  POWER
  ROUND (number)
  SIGN
  SIN
  SINH
  SQRT
  TAN
  TANH
  TRUNC (number)
字符函数 CHR
  CONCAT
  INITCAP
  LOWER
  LPAD
  LTRIM
  REGEXP_REPLACE
  REGEXP_SUBSTR
  REPLACE
  RPAD
  RTRIM
  SUBSTR
  TRANSLATE
  TREAT
  TRIM
  UPPER
  ASCII
  INSTR
  LENGTH
  REGEXP_INSTR
  REVERSE
日期函数 ADD_MONTHS
  CURRENT_DATE
  CURRENT_TIMESTAMP
  EXTRACT (datetime)
  LAST_DAY
  LOCALTIMESTAMP ╳ 关键字 ╳ 关键字
  MONTHS_BETWEEN
  NEW_TIME
  NEXT_DAY
  ROUND (date)
  SYSDATE
  SYSTIMESTAMP
  TO_CHAR (datetime)
  TO_TIMESTAMP
  TRUNC (date)
编码解码函数 DECODE
  DUMP
空值比较函数 COALESCE
  LNNVL
  NANVL
  NULLIF
  NVL
  NVL2
通用数值比较函数 GREATEST
  LEAST
类型转换函数 CAST
  CONVERT
  TO_CHAR (character)
  TO_CHAR (datetime)
  TO_CHAR (number)
  TO_DATE
  TO_NUMBER
  TO_TIMESTAMP
分析函数 AVG *
  COUNT *
  DENSE_RANK
  FIRST
  FIRST_VALUE *
  LAG
  LAST
  LAST_VALUE *
  LEAD
  MAX *
  MIN *
  RANK
  ROW_NUMBER
  SUM *

8. SQL运算符

SQL运算符类型 运算符名称 ORACLE AntDB Postgresql
算数运算符 +
  -
  *
  /
逻辑运算符 and
  or
  not
比较运算符 !=
  <>
  ^=
  =
  <
  >
  <=
  >=
  is (not) null
  (not) between and
  (not)in
  all/any
  exists
  like
连接运算符 ll
合并运算符 union (all)
  minus except
  intersect

9. 查询

SQL查询类型 名称 ORACLE AntDB Postgresql
去重 distinct
  unique
分组 group by
过滤 having
排序 order by
递归 connect by
cte cte
case when case when
批量insert insert all into ╳ insert into values ╳ insert into values
merge into merge into ╳ upsert ╳ upsert

10. 表连接

表连接类型 表连接名称 ORACLE AntDB Postgresql
内连接 (inner) join
  from tableA,tableB
左连接 left (outer) join
右连接 right (outer) join
全连接 full (outer) join
(+) (+)

11. 视图/函数/存储过程/触发器

类型 名称 ORACLE AntDB Postgresql
视图 create view
  alter view
  drop view
函数 create fuction
  alter fuction
  drop fuction
存储过程 create procedure
  alter procedure
  drop procedure
触发器 create trigger
  alter trigger
  drop trigger

12. sequence

类型 名称 ORACLE AntDB Postgresql
新建序列 create sequence
修改序列 alter sequence
删除序列 drop sequence
操作序列 seq.nextVal ╳ nextVal(‘seq’)
  seq.currVal ╳ currVal(‘seq’)

13. 其他

类型 名称 ORACLE AntDB Postgresql
过程语言 declare
  exception
  cursor
自定义type create type
  alter type
  drop type
数据类型隐式转换 隐式转换
oracle别名 oracle别名
类型复制 %type
  %rowtype
like通配符 %
  _
dual虚拟表 dual