数据库数据类型对比

1.数字类型

整数/固定精度

oracle

NUMBER(38,127)/DECIMAL

p有效数字的位数;s小数位数,可以大于p左边填充0,当s取负数时,将小数点左边的s位置为0,并四舍五入
s范围是-84到127
精确到小数点右边s位,并四舍五入。然后检验有效位是否<=p

达梦、sql server、mysql
达梦sql servermysql
BIGINT -2^63 - 2^63-1bigint 8字节 -2^63 - 2^63-1bigint 8字节 区分带符号和不带符号
INTEGER/INT -2^31 - 2^31-1int/integer 4字节 -2^31 - 2^31-1int 4字节 mediumint 3字节
SMALLINT -2^15 到 2^15-1smallint 2字节 -2^15 到 2^15-1smallint 2字节
TINYINT/BYTE -128 到 127tinyint 1字节 0-255tinyint 1字节 = bool类型
NUMERIC/DECIMAL/DEC/NUMBER(p,s) p精度 1-38 s标度 不超过精度 不可以作为自增decimal/numeric(p,s) 固定精度和小数位数 p精度 1-38 s小数位 不超过精度decimal(m,d) m<=65 ,d<=30且 d<m 是小数位 decimal/numeric,没有number 不可作为自增

近似数值类型/浮点数

不常用,容易出现精度丢失的问题

oracle达梦sql servermysql
FLOAT、BINARY_FLOAT、BINARY_DOUBLEFLOAT、DOUBLE、REALfloat、realfloat、double

2. 位串数据类型

Oracle: 无

达梦:bit 只能存储0 1 空值,与 SQL SERVER2000 的 BIT 数据类型相似

Mysql: bit存储0和1

3. 字符类型

注意字符和字节的区分

固定长度

Oracle: char 最大2000字节

达梦:CHAR/CHARACTER(n) 相同 不超过32767字节

Sql server: CHAR(n) n的范围是1到8000

Mysql: char固定长度字符串,最多255个字符

可变长度

oracle
  1. varchar2(size) varchar2是oracle特有的 最大4000个字节
  2. varchar(3 CHAR) 3个字符,能存三个汉字;varchar(3) 3个字节,不能存两个汉字
  3. 字符集ZHS16GBK一个汉字两个字节
  4. 查询BYTE还是CHAR:SELECT VALUE FROM nls_database_parameters WHERE PARAMETER = 'NLS_LENGTH_SEMANTICS';
  5. 查字符集:SELECT value FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET';
达梦
  1. VARCHAR2和VARCHAR(n) 相同,不超过32767
  2. 默认以字节为单位,也可以和oracle一样,使用VARCHAR2(3 CHAR)
  3. 字符集为:GB18030 一个汉字两个字节;字符集为:utf-8 一个汉字三个字节
Sql server

VARCHAR(n) n的范围是1到8000

Mysql

varchar(L),可变长字符串,字符为单位,跟编码有关,MySQL要求一个行的定义长度不能超过65535即64K

大文本

oracle达梦sql servermysql
CLOB 最大长度4G
LONG 最多2G,限制较多,推荐使用CLOB
TEXT/LONG/LONGVARCHAR/CLOB
最大为 100G-1 字节
TEXT 2^31-1个字节text类型

4. 日期和时间

oracle

  1. DATE 存储日期和时间 精确到秒
  2. TIMESTAMP 比DATE精度更高可以精确到微妙
  3. TIMESTAMP WITH TIME ZONE 时区信息保存在列数据中
  4. TIMESTAMP WITH LOCAL TIME ZONE 将用户输入的时间转换为数据库服务器所在时区的时间
达梦
  1. DATE 仅日期 TIME 仅时间 TIME(6)微妙级别
  2. TIMESTAMP / DATETIME 日期+时间 可以精确到小数秒 0-9,缺省精度 6,与 DATE 类型相同,DM 不计算’1582-10-05’到’1582-10-14’之间的 10 天。
  3. TIME WITH TIME ZONE 仅时间带时区
    DATETIME/TIMESTAMP WITH TIME ZONE 日期+时间带时区,时区部分的实质是 INTERVAL HOUR TO MINUTE 类型,取值范围:-12:59 与 +14:00
  4. TIMESTAMP WITH LOCAL TIME ZONE 可以将WITH TIME ZONE转化为本地时区类型
Sql server
  1. DATE 仅日期 0001-01-01到9999-12-31;TIME 仅时间 7位 100ns
  2. DATETIME类型:1753-01-01到9999-12-31
    DATETIME2类型: 0001-01-01到9999-12-31 秒7位 100ns
  3. datetimeoffset 同DATETIME2带时区
  4. TIMESTAMP 时间戳 数据发生变化自动更新,不可显示插值
Mysql
  1. date 3字节 yyyy-MM-dd
    time 3字节 HH:mm:ss
  2. datetime 8字节 yyyy-MM-dd HH:mm:ss 1000到9999 5.6支持毫秒
    timestamp 4字节 yyyy-MM-dd HH:mm:ss 1970年开始
  3. 时区业务层处理

参考

达梦数据库官网

Sql server官网

从Oracle迁移达梦:

  1. 数字类型,达梦NUMBER(p,s)标度不超过精度

  2. 字符串类型,达梦varchar和varchar2用法相同;varchar(3 char)是3个字符和varchar(3)不同;oracle插入空字符串变为NULL,跟达梦不同

  3. 日期类型,达梦DATE仅日期,带时间用timestamp或datetime

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值