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

PostgreSQL 与 MogDB/openGauss 之 数据类型

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

数值类型

PostgreSQL14.3 MogDB3.0 ORACLE 19C 存储尺寸 备注
tinyint - 支持 - 1字节 0 ~ 255
smallint 支持 支持 number子类型 2字节 -32,768 ~ +32,767
integer 支持 支持 number子类型 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
int16 - 不支持用户建表使用 - 16字节
decimal[(p[,s])] 支持 支持 - 可变字节 精度p取值范围为[1,1000],刻度s取值范围为[0,p]。p为总位数,s为小数位数。最高小数点前131072位,以及小数点后16383位
numeric[(p[,s])] 支持 支持 - 可变字节 同decimal
number[(p[,s])] - numeric 别名 p:38 s:127
real 支持 支持 同 float 4字节 6位十进制数字精度
float4 - 同 real -
double precision 支持 支持 - 8字节 15位十进制数字精度
binary_double - double precision别名 支持
float8 - 同double precision -
float[(p )] - 支持 number子类型 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
LARGESERIAL - 支持 - 16字节

字符类型

PostgreSQL14.3 MogDB3.0 ORACLE 19c 存储尺寸 备注
char(n) 最大1GB 最大10MB 2000 bytes (standard)
6553 bytes (extended)
pg中n指字符数量,mg/oracle中n指字节数量
nchar(n) - 同 char(n) 最多2000字节,包含UNICODE格式 n指字节数量
varchar(n) 最大1GB 最大10MB 不建议使用 pg中n指字符数量,mg/oracle中n指字节数量
varchar2(n) - varchar(n)别名 替换varchar(n)
4000 bytes (standard)
6553 bytes (extended)
nvarchar2(n) - 最大为10MB,n指字符数量 同 varchar2(n)
包含UNICODE格式
nvarchar(n) - nvarchar2(n)别名 -
text 最多1GB - 1 最多1GB - 1 -
clob - text别名 (4 gigabytes-1) * (database block size)

时间日期类型

PostgreSQL14.3 MogDB3.0 Oracle 存储尺寸 备注
timestamp[(p )][without time zone] 8字节 8字节 7字节/11字节
timestamp[(p )][with time zone] 8字节 8字节 7字节/11字节
date 日期,4字节 日期和时间,4字节(兼容O,8字节) 日期和时间,7字节
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 DAY (l) TO SECOND (p ) - 16字节 11字节 时间间隔,X天X小时X分X秒
interval[fields][(p )] 16字节 12字节 - -178000000年 - 178000000年
smalldatetime - 支持 - 8字节 日期和时间,不带时区,精确到分钟,秒位大于等于30秒进一位
reltime - 支持 - 4字节 相对时间间隔
X years X mons X days XX:XX:XX
abstime - 支持 - 4字节 YYYY-MM-DD hh:mm:ss+timezone
取值范围为1901-12-13 20:45:53 GMT~2038-01-18 23:59:59 GMT,精度为秒。

二进制

PostgreSQL14.3 MogDB3.0 Oracle 存储尺寸 备注
blob - 1GB-8203字节(即1073733621字节) (4 gigabytes-1) * (database block size) 二进制大对象,mg列存不支持
raw - 变长十六进制类型,列存不支持
1GB-8203字节(即1073733621字节)
变长二进制类型
4000 bytes (standard)
32767 bytes (extended)
bytea 支持 支持 - mg:1GB-8203字节(即1073733621字节)|变长的二进制字符串,mg列存不支持

其他类型

PostgreSQL14.3 MogDB3.0 Oracle 19c 存储尺寸 备注
json 支持 支持 支持
jsonb 支持 支持 -
money 支持 支持 - 8字节 -92233720368547758.08到+92233720368547758.07
boolean 支持 支持 - 1字节 true、false、null
enum 支持 支持 - 4字节 CREATE TYPE name AS ENUM (‘a’, ‘b’, ‘c’);
array 支持 支持 可自定义
范围类型 支持 支持 -
uuid 支持 支持 -
XML类型 支持 支持 支持
几何类型 支持 支持 已经自带,使用时需要指定
网络地址 支持 支持 -
位串类型 支持 支持 -
文本搜索 支持 支持 已经自带,使用时需要指定
HLL - 支持 -
对象标识符 支持 支持 -
伪类型 支持 支持 -
账本数据库 - 支持 -
最后修改时间:2022-06-15 21:14:11
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

目录
  • 数值类型
  • 字符类型
  • 时间日期类型
  • 二进制
  • 其他类型