差异父类 | 差异子类 | 详情(Oracle) | 详情(Vastbase G100) | 是否可以兼容 | 实现方式 |
字符集和排序规则 | 字符集 | 支持229种字符集,常用的为 ZHS16GBK ,AL32UTF8,UTF8 |
ISO-8859系列和多字节字符集比如 EUC(扩展Unix编码)、UTF-8、Mule国际编码,常用的为UTF-8 |
兼容 | UTF-8 |
排序规则 | binary | binary | 兼容 | ||
数据类型 | 数值类型 | NUMBER,INTEGER | tinyint,smallint,integer, bigint,DECIMAL,NUMBER,NUMERIC |
兼容 | integer, bigint,DECIMAL,NUMBER,NUMERIC |
FLOAT(p) | NUMERIC[(p[,s])] | 兼容 | |||
BINARY_FLOAT | 不兼容 | DECIMAL[(p[,s])],NUMBER | |||
BINARY_DOUBLE | DECIMAL[(p[,s])],NUMBER | 兼容 | |||
字符类型 | CHAR | CHAR(n),CHARACTER(n) | 兼容 | ||
NCHAR | NCHAR(n) | 兼容 | |||
VARCHAR2 | VARCHAR(n),CHARACTER VARYING(n),VARCHAR2 | 兼容 | |||
NVARCHAR2 | 不兼容 | TEXT | |||
CLOB | TEXT,CLOB | 兼容 | |||
时间类型 | DATE | date,TIME [(p)] [WITHOUT TIME ZONE] | 兼容 | ||
TIMESTAMP [p] | TIME
[(p)] [WITH TIME ZONE] TIMESTAMP[(p)] [WITHOUT TIME ZONE] |
兼容 | |||
TIMESTAMPWITH TIME ZONE | TIMESTAMP[(p)][WITHTIME ZONE] | 兼容 | |||
TIMESTAMP WITH LOCAL TIME ZONE | LOCALTIMESTAMP | 兼容 | |||
二进制类型 | BFILE | 不兼容 | 无 | ||
BLOB | BLOB | 兼容 | |||
RAW | BYTEA | 兼容 | |||
函数 | 日期函数 | LOCAL TIMESTAMP | 无 | 不兼容 | Sysdate、now() |
NEW_TIME | 无 | 不兼容 | 自定义函数实现 CREATE OR REPLACE FUNCTION public.new_time(ts timestamp without time zone, tz1 text, tz2 text) RETURNS timestamp without time zone LANGUAGE plpgsql STRICT AS $function$ declare res timestamp; begin execute 'set local timezone to '''|| tz2||''''; -- raise notice '%', current_setting('timezone'); select (timestamptz(ts || tz1))::timestamp into res; return res; end; |
||
编码解码函数 | DUMP | 无 | 不兼容 | ||
类型转换函数 | to_multi_byte | 无 | 不兼容 | 自定义函数实现 1、全角转换为半角函数 create or replace function CnFullToHalf(s character varying) returns character varying as $$ declare retval character varying; c character varying; l integer; begin l=length(s); retval=''; while l>0 loop c=left(s,1); if c=' ' then -- 全角空格 retval=retval||' '; elsif c>='!' and c<='~' then -- 全角!到~的范围 retval=retval || chr(ascii('!')+ascii(c)-ascii('!')); else retval=retval||c; end if; s=substring(s,2,l-1); l=l-1; end loop; return retval; end; $$language plpgsql strict immutable; |
|
to_single_byte | 无 | 不兼容 | 自定义函数实现 2、半角转全角 create or replace function CnHalfToFull(s character varying) returns character varying as $$ declare retval character varying; c integer; l integer; begin l=length(s); retval=''; while l>0 loop c=ascii(left(s,1)); if c=32 then -- 空格 retval=retval||' '; elsif c>=33 and c<=126 then retval=retval || chr(ascii('!')+c-ascii('!')); else retval=retval||chr(c); end if; s=substring(s,2,l-1); l=l-1; end loop; return retval; end; $$language plpgsql strict immutable; |
||
to_timestamp_tz | 无 | 不兼容 | date_format(date timestamp with time zone,format text)、 | ||
分析函数 | FIRST | 无 | 不兼容 | FIRST_VALUE(value any) | |
LAST | 无 | 不兼容 | LAST_VALUE(value any) | ||
median获取中位数 | 无 | 不兼容 | 自定义函数 select id,company,salary from ( select e.*, count(*) over(partition by company) x,row_number() over(partition by company order by salary) r_num from employee e) tmp where r_num in (ceil(x/2),x/2+1); |
||
包 | dbms_assert | 无 | 不兼容 | ||
dbms_pipe | 无 | 不兼容 | |||
SQL语法 | dual表查询 | select 1 from dual; | select
1 from dual; select 1; |
兼容 | select
1 from dual; select 1; |
分页查询 | rownum或者row_number() over | rownum或者row_number()
over limit m,n; |
兼容 | rownum或者row_number()
over limit m,n; |
|
with as materialize | with t1 as
( select /*+ materialize*/ id from t_a), t2 as ( select id from t_b) select * from t1 ,t2 where t1.id=t2.id; |
with
t1 as MATERIALIZED ( select id fromt_a), t2 as ( select id from t_b) select * from t1 ,t2 where t1.id=t2.id; |
兼容 | with
t1 as MATERIALIZED ( select id fromt_a), t2 as ( select id from t_b) select * from t1 ,t2 where t1.id=t2.id; |
|
日期相减 | Oracle返回为相差的天数; | VastbaseG100返回为interval类型 | 需要处理 | select extract('epoch' from now()) - extract('epoch' from timestamp '2018-10-01'); | |
purge | purge
table temp; drop table table_name purge; |
不支持 | 不兼容 | 无 | |
DDL回滚 | 不支持 | 支持 | 不兼容 | 无 | |
开发支持 | package、package body | schema、procedure/function | 兼容 | 转换对象 | |
dblink | fdw | 支持 | 转换对象 | ||
ROWID | 支持 | 支持 | 支持 | ||
提交模式 | 手动提交 | 自动提交 | 兼容 | 显式commit; |
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。