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) は NUMBER の部分集合となります。 |
| 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 |