GBase 8c 兼容模式使用说明

原文链接:
https://www.gbase.cn/community/post/4011
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

为应对同构/异构数据库迁移通常面临的挑战,GBase 8c从数据库自身兼容性、配套工具兼容性等多方面进行设计优化,在内核本身的适配能力和性能基础上,兼容Oracle,PostgreSQL,MySQL,Teradata等多种关系型数据库,并且提供完善的SQL支持和丰富的函数库。下面以常用关系型数据库的相关语法做简单介绍

库级兼容性:

  • DBCOMPATIBILITY [ = ] compatibility_type

    指定兼容的数据库的类型,默认兼容O。

    取值范围:A、B、C、PG。分别表示兼容O、MY、TD和POSTGRES。

       注意:

                1.该参数只能建库时确定好,后期无法直接通过sql语句修改兼容性;

                2.A模式下,数据库将空字符串作为NULL处理,数据类型DATE会被替换为TIMESTAMP(0) WITHOUT TIME ZONE。

示例:

CREATE DATABASE 数据库名 WITH  ENCODING = 'UTF8' DBCOMPATIBILITY = 'A' OWNER 用户名;

1.兼容Oracle

CREATE DATABASE oracle WITH  ENCODING = 'UTF8' DBCOMPATIBILITY = 'A' OWNER test;

CREATE TABLE users (
  id NUMBER PRIMARY KEY,
  username VARCHAR2(50) NOT NULL,
  email VARCHAR2(100) NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
  );

CREATE UNIQUE INDEX idx_users_username ON users(username);

insert into users values(1,'张三','11111@qq.com');
select * from users;
 

2.兼容PostgreSQL

       注意:

                1.PG模式下,CHAR和VARCHAR以字符为计数单位,其它兼容性以字节为计数单位。例如,对于UTF-8字符集,CHAR(3)在PG兼容性下能存放3个中文字符,而在其它兼容性下只能存放1个中文字符。

CREATE DATABASE pg WITH  ENCODING = 'UTF8' DBCOMPATIBILITY = 'PG' OWNER test;

CREATE TABLE postgres (
  id INT PRIMARY KEY,
  data VARCHAR(100)
  ;
 
CREATE SEQUENCE postgres_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1;
ALTER TABLE postgres ALTER COLUMN id SET DEFAULT nextval('postgres_id_seq');

pg=# select nextval('postgres_id_seq');
nextval
---------
      1
(1 row)

pg=# select nextval('postgres_id_seq');
nextval
---------
      2
(1 row)

insert into postgres(data) values('11acb'),('222ABC');
select * from postgres;
 

3.兼容MySQL

       注意:

                1.将字符串转换成整数类型时,如果输入不合法,B兼容性会将输入转换为0,而其它兼容性则会报错。

CREATE DATABASE mysql WITH  ENCODING = 'UTF8' DBCOMPATIBILITY = 'B' OWNER test;
 \c mysql

CREATE TABLE mytable (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(100)
   ;

INSERT INTO mytable (name) VALUES ('John');
SELECT LAST_INSERT_ID();
last_insert_id
----------------
             1
(1 row)

SELECT * from  mytable;
 id | name
----+------
 1 | John
 

另外呢,GBase 8c在mysql兼容模式下,也支持mysql内置函数

LEAST(expr1, expr2, expr3, …) 返回列表中的最小值 

LOG(x) 返回自然对数(以 e 为底的对数)

POW(x,y)/POWER(x,y)返回 x 的 y 次方

CONCAT(s1,s2…sn)字符串 s1,s2 等多个字符串合并为一个字符串

FIND_IN_SET  回在字符串s2中与s1匹配的字符串的位置

FORMAT(x,n)函数可以将数字 x 进行格式化 “#,###.##”, 将 x 保留到小数点后 n 位,最后一位四舍五入

 

原文链接:
https://www.gbase.cn/community/post/4011
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值