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
|