OceanBaseデータベースにおけるNUMBER型の格納形式はすべて同じですが、値域の定義に基づき、次の表のように4つの形式に分類できます。
格納タイプ |
MySQLモードのデフォルト構文と格納ルール |
Oracleモードのデフォルト構文と格納ルール |
説明 |
|---|---|---|---|
固定小数点数 DECIMAL(M,D) = {10^{-D}*i | i = 0,1,...,10^M-1} ここでMは自然数、Dは整数 |
|
|
固定小数点数 (M1,D1) が固定小数点数 (M2,D2) の部分集合であるためには、D1 <= D2 かつ M1-D1 <= M2-D2 の両方を満たす必要があります。 |
| 無符号固定小数点数 DECIMAL(M,D) |
|
サポートなし | 無符号固定小数点数は、固定小数点数 DECIMAL(M,D) の非負の数と等価です |
| 浮動小数点 NUMBER | サポートなし | NUMBER | Oracleモードの浮動小数点 NUMBER は、総精度38ビットの浮動小数点数であり、NUMBER(M, D) の部分集合ではありません。ただし、M-D <= 38 の場合に限り、NUMBER(M, D) はその部分集合となります。 |
| Oracle FLOAT(P) | サポートなし |
|
現在なし |
OceanBaseデータベースV4.2.0以降のバージョンでは、すべてのNUMBER型間の変換ルールは次の表のとおりです。表中の「-」は互換モードを跨ぐ場合を示しています。
注意
浮動小数点
NUMBERと OracleFLOATはOracleモードにのみ存在し、無符号固定小数点数はMySQLモードにのみ存在します。Oracleモードでは、インスタント変換(スキーマのみを変更し、データを変更しない変換)が許可されない場合、それは非空のテーブルは変換できないことを意味します。MySQLモードでは、インスタント変換が許可されない場合、それはデータの書き換えが必要であることを意味します。インスタント変換が許可されていても、すべてのソース型のデータが対象型に損失なく挿入される保証はありません。例えば、固定小数点数からOracle
FLOATへの変換が該当します。
インスタント変換が許可される(From\To) |
固定小数点数(M2,D2) |
無符号固定小数点数(M2,D2) |
浮動小数点 NUMBER |
Oracle FLOAT(P2) |
|---|---|---|---|---|
| 固定小数点数(M1,D1) | 変換条件:D1 <= D2 かつ M1-D1 <= M2-D2 | サポートなし | 変換条件:M-D <= 38 | 変換条件:M1-D1 <=ceil(P*0.30103) |
| 無符号固定小数点数(M1,D1) UNSIGNED | 変換条件:D1 <= D2 かつ M1-D1 <= M2-D2 | 変換条件:D1 <= D2 かつ M1-D1 <= M2-D2 | - | - |
| 浮動小数点 NUMBER | サポートなし | - | サポート | サポートなし |
Oracle FLOAT(P1) |
サポートなし | - | サポート | 変換条件:P1 <= P2 |