暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Vastbase G100 兼容性之于Oracle

原创 飞鸟-柯 2022-12-12
1845
差异父类 差异子类 详情(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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论