---
title: OceanBase 数据库类型转换规则-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 OceanBase 数据库类型转换规则相关的常见问题和使用技巧，帮助您快速解决 OceanBase 数据库类型转换规则的难题。
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# OceanBase 数据库类型转换规则

更新时间：2024-03-20 12:26

适用版本： V4.2.x 内容类型：TechNote  

OceanBase 数据库 V4.2.x 版本支持所有 number 类之间的转换规则，在 MySQL 和 Oracle 语法中有不同的表示。

## 数值类型定义

数值类型虽然存储格式相同，但根据值域定义可以分为以下四种。

### 定点数

- 定义: 定点数(M,D) = {10^{-D}*i | i = 0,1,...,10^M-1}。其中， M 是自然数， D 是整数。
 - MySQL 语法: decimal(M, D)，其中 65 >= M >= D >= 0。
 - Oracle 语法: number(M, D)，其中 M 属于 [1, 38] 且 D 属于 [-84, 127]。

### 无符号定点数

- 定义：(M,D) = 定点数(M,D) 中的非负数。
 - MySQL 语法: 使用 decimal 类型加上 unsigned 属性。
 - Oracle 语法: 不支持。

### 浮点 number

- 定义: 浮点 number 是一个总精度为 38 位的浮点数。

     - 它一定不是 oracle number(M,D) 的子集。
     - oracle number(M,D) 是它的子集当且仅当 M-D <= 38。
 - MySQL 语法：不支持。
 - Oracle 语法: number。

### Oracle float

- 等价定义: real = float(63) 和 float = float(126)。
 - MySQL 语法：不支持。
 - Oracle 语法: float(P)，其中 P 属于 [1, 126]。

## 转换规则

1. 浮点 number 和 oracle float 只存在于 Oracle，而无符号定点数只存在于 MySQL 中；下表中的 `-` 是指跨越了兼容模式的情况。
 2. instant 转换是指只修改 schema、无需重写数据的转换；
      1. 对于原生 Oracle，不允许 instant 转换是不允许非空表的转换（空表没有数据只修改 schema 即可）；
      2. 对于 OceanBase 数据库 Oracle 模式，不允许 instant 转换是指空表/非空表都不能转换；
      3. 对于 OceanBase 数据库 MySQL 模式，不允许 instant 转换是指需要重写数据，即该 DDL 的时间和数据量成正比
 3. 即使允许 instant 转换，也不能保证所有源类型的数据都能无损地插入到目的类型中，例如定点数转 oracle float 。

| 允许 instant 转换(from\to) | 定点数(M2,D2) | 无符号定点数(M2,D2) | 浮点 number | oracle float(P2) |
| --- | --- | --- | --- | --- |
| 定点数(M1,D1) | if D1 <= D2 and M1-D1 <= M2-D2 | no | if M-D <= 38 | if M1-D1 <= ceil(P*0.30103) |

ceil 是指取上整 [关于 0.30103](https://forums.oracle.com/ords/apexds/post/float-vs-number-datatype-0633) | | 无符号定点数(M1,D1) unsigned | if D1 <= D2 and M1-D1 <= M2-D2 | if D1 <= D2 and M1-D1 <= M2-D2 | - | - | | 浮点 number | no | - | yes | no | | oracle float(P1) | no | - | yes | P1 <= P2 |

## 适用版本

OceanBase 数据库 V4.2.x 版本。

上一篇

[如何添加空间参考系统](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000003433850)

下一篇

[列默认值吞空格](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000003793176) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
