NUMBER データ・タイプ
NUMBER データ・タイプは、Oracle NUMBER データ・タイプを使用するアプリケーションをサポートします。この機能は、Db2® Warehouse on Cloud 管理対象サービスのエントリー・プランには適用されません。
効果
- NUMBER に精度属性とスケール属性を指定していない場合は、DECFLOAT(16) にマップされます。
- NUMBER(p) を指定した場合は、DECIMAL(p) にマップされます。
- NUMBER(p,s) を指定した場合は、DECIMAL(p,s) にマップされます。
数値リテラルのサポートに変更はありません。整数、10 進数、および浮動小数点定数の規則が引き続き適用されます。 こうした規則によって、10 進リテラルが 31 桁に、浮動小数点リテラルがバイナリー倍精度浮動小数点値の範囲に制限されます。 必要な場合には、(CAST 仕様または DECFLOAT 関数による) ストリングから DECFLOAT(34) へのキャストは、DECIMAL または DOUBLE の範囲を超えて、DECFLOAT(34) の範囲までの値に対して使用できます。 末尾が D (64 ビットのバイナリー浮動小数点値を表す)、および末尾が F (32 ビットのバイナリー浮動小数点値を表す) である数値リテラルは、現在サポートされていません。 E を含む数値リテラルはデータ・タイプ DOUBLE であり、CAST 仕様またはキャスト関数 REAL を使用して、REAL にキャストすることができます。
NUMBER データ値を CAST 仕様あるいは VARCHAR または CHAR スカラー関数を使用して文字ストリングにキャストすると、すべての先行ゼロが結果から削除されます。
CREATE SEQUENCE ステートメントの順序値で使用されるデフォルトのデータ・タイプは、INTEGER ではなく DECIMAL(27) になります。
DECIMAL または DECFLOAT データ・タイプを含むすべての算術演算と算術関数または数学関数は、10 進浮動小数点を使用して正しく実行され、データ・タイプ DECFLOAT(34) の値が戻されます。 このタイプの動作は、両方のオペランドに DECIMAL データ・タイプまたは DECFLOAT(16) データ・タイプが含まれる算術演算にも適用されます。これは、式の『算術演算子がある式』のセクションに記載されている 10 進演算の説明とは異なります。また、整数データ・タイプ (SMALLINT、INTEGER、BIGINT) しか含まないすべての除算演算子は、10 進浮動小数点を使用して正しく実行できます。 こうした演算では、整数データ・タイプではなく、データ・タイプが DECFLOAT(34) である値が戻されます。 整数オペランドを使用してゼロによる除算を行うと、無限大が戻され、エラーではなく警告が表示されます。
- COALESCE
- DECODE
- GREATEST
- LEAST
- MAX (scalar)
- MIN (scalar)
- NVL
- VALUE
- セット演算 UNION、EXCEPT(MINUS)、INTERSECT の対応する列
- IN 述部の IN リストの式値
- 複数行の VALUES 節の対応する式
| ソース・データ・タイプ | ターゲット・データ・タイプ | |||
|---|---|---|---|---|
| 整数タイプ | DECIMAL | DECFLOAT | REAL/DOUBLE | |
| 整数タイプ | 適用外 | 適用外 | decflt_rounding | 最も近い偶数への丸め |
| DECIMAL | decflt_rounding | decflt_rounding | decflt_rounding | 最も近い偶数への丸め |
| DECFLOAT | decflt_rounding | decflt_rounding | decflt_rounding | 最も近い偶数への丸め |
| REAL/DOUBLE | 切り捨て | decflt_rounding | decflt_rounding | 最も近い偶数への丸め |
| ストリング (キャストのみ) | 適用外 | decflt_rounding | decflt_rounding | 最も近い偶数への丸め |
NUMBER サポートが有効になっているデータベースでは、組み込み関数 STDDEV、VAR、および VARIANCE に整数を入力すると、DOUBLE の代わりに DECFLOAT が返されます。 この関数に依存する結果タイプを持つビュー列またはマテリアライズ照会表 (MQT) 列は、そのビューまたは MQT が再生成または再作成されるまで、引き続き古い結果タイプを返します。 MQT の場合、以前 MQT にルーティングされていた照会があれば、再作成されるまで MQT にルーティングされなくなります。
クライアント/サーバーの互換性
NUMBER データ・タイプがサポートされている データベース・サーバーと共に作動しているクライアント・アプリケーションでは、サーバーから NUMBER データ・タイプを受信することはありません。Oracle サーバーから NUMBER を報告した列または式は、 データベース・サーバーから DECIMAL または DECFLOAT を報告します。
Oracle 環境では丸めモードに四捨五入を使用するため、クライアントの丸めモードがサーバーの丸めモードに一致していることが重要です。 これは、db2cli.ini ファイルの設定が decflt_rounding データベース構成パラメーターの値に一致しなければならないことを意味します。 Oracle の丸めモードに最も近くするには、データベース構成パラメーターで ROUND_HALF_UP を指定してください。
制約事項
- 以下の項目に関しては、サポートされていません。
- 31 を超える精度属性
- 精度属性におけるアスタリスク (*) の使用
- 精度属性より大きい位取りの属性
- 負の位取りの属性
- 三角関数および DIGITS スカラー関数を、精度 (DECFLOAT) が指定されていない NUMBER データ・タイプの引数によって呼び出すことはできません。
- NUMBER という名前で特殊タイプは作成できません。