openGauss

开源数据库

openGauss社区官网

开源社区

PostgreSQL与openGauss之数据类型

高云龙2020-12-17openGauss与postgresql对比

PostgreSQL 与 openGauss 之数据类型

openGauss 是基于 PostgreSQL 9.2.4 内核版本开发的,且 openGauss 的兼容性很强,包括兼容 oracle、mysql、tidb 及 PostgreSQL,如果习惯了 PostgreSQL 的用法再来维护 openGauss 数据库,在日常维护使用过程中经常会出现不支持或者语法错误,现在整理一下两个数据库常用数据类型的差异,可快速在 PostgreSQL 和 openGauss 两个数据库之间进行切换,减少出错的概率。

数据库对比版本如下:

  • PostgreSQL 版本 12.2
  • openGauss 版本 1.0.1

数字类型

  

PostgreSQL

openGauss

存储尺寸

备注

tinyint

-

支持

1字节

0 ~ 255

smallint

支持

支持

2字节

-32,768 ~ +32,767

integer

支持

支持

4字节

-2,147,483,648 ~ +2,147,483,647

binary_integer

  

支持

-

integer别名

bigint

支持

支持

8字节

-9,223,372,036,854,775,808 ~ +9,223,372,036,854,775,807

decimal[(p[,s])]

支持

支持

可变字节

最高小数点前131072位,以及小数点后16383位

numeric[(p[,s])]

支持

支持

可变字节

最高小数点前131072位,以及小数点后16383位

number[(p[,s])]

-

支持

-

numeric别名

real

支持

支持

4字节

6位十进制数字精度

float4

-

支持

4字节

6位十进制数字精度

double precision

支持

支持

8字节

15位十进制数字精度

binary_double

-

支持

8字节

double precision别名

float8

-

支持

8字节

15位十进制数字精度

float[(p )]

-

支持

4字节或8字节

-

dec[(p,[s])]

-

支持

-

最高小数点前131072位,以及小数点后16383位

integer[(p,[s])]

-

支持

-

最高小数点前131072位,以及小数点后16383位

smallserial

支持

支持

2字节

1 ~ 32,767

serial

支持

支持

4字节

1 ~ 2,147,483,647

bigserial

支持

支持

8字节

1 ~ 9,223,372,036,854,775,807

字符类型

  

PostgreSQL

openGauss

存储尺寸

备注

char(n)

支持

支持

pg中最大为1GB,og中最大为10MB

pg中n指字符数量,og中n指字节数量

nchar(n)

-

支持

最大为10MB

n指字节数量

varchar(n)

支持

支持

pg中最大为1GB,og中最大为10MB

pg中n指字符数量,og中n指字节数量

varchar2(n)

-

支持

最大为10MB

varchar(n)别名

nvarchar2(n)

-

支持

最大为10MB

n指字符数量

text

支持

支持

1GB - 1

-

clob

-

支持

1GB - 1

text别名

时间日期类型

  

PostgreSQL

openGauss

存储尺寸

备注

timestamp[(p )][without time zone]

支持

支持

8字节

4713 BC - 294276 AD

timestamp[(p )][with time zone]

支持

支持

8字节

4713 BC - 294276 AD

date

支持

支持

4字节

4713 BC - 5874897 AD (og实际存储空间大小为8字节)

time[(p )][without time zone]

支持

支持

8字节

00:00:00 - 24:00:00

time[(p )][with time zone]

支持

支持

12字节

00:00:00+1459 - 24:00:00-1459

interval[fields][(p )]

支持

支持

16字节

-178000000年 - 178000000年

smalldatetime

  

支持

8字节

日期和时间,不带时区,精确到分钟,秒位大于等于30秒进一位

interval day(1) to second(p )

  

支持

16字节

-

reltime

  

支持

4字节

-

json 类型

  

PostgreSQL

openGauss

存储尺寸

备注

json

支持

支持

-

-

jsonb

支持

-

-

-

货币类型

  

PostgreSQL

openGauss

存储尺寸

备注

money

支持

支持

8字节

-92233720368547758.08到+92233720368547758.07