ESQL DECIMAL データ・タイプ

DECIMAL データ・タイプは、10 進数をそのまま保持します。 10 進数には、精度、位取り、および丸めがあります。 精度とは数値の桁の合計数のことです。
  • 最小精度は 1
  • 最大精度は 34
位取りとは小数点以下の桁数のことです。
  • 最小位取り (-exponent) は -999,999,999
  • 最大位取り (-exponent) は +999,999,999

DECIMAL を宣言するときに、精度と位取りを定義することはできません。 これらは、自動的に割り当てられるからです。 精度と位取りを指定できるのは、DECIMAL へのキャストを行うときだけです。

位取り、精度、および丸め

以下の位取り、精度、および丸め規則が適用されます。
  • 最大精度内を維持するために丸めが必要ない場合、 加算または減算の結果の位取りは、2 つのオペランドの位取りより大きくなります。
  • 最大精度内を維持するために丸めが必要ない場合、 乗算の結果の位取りは、2 つのオペランドの位取りの合計となります。
  • 除法の結果の精度は、 結果を正確に表すために必要な桁数および最大精度よりも小さくなります。
  • 加算、減算、乗算、除法の計算はすべて、 必要な場合、最小重み数字を完全に丸め、最大精度内に収まるようにします。
  • すべての自動丸めは、 銀行型丸め、つまり二等分シンメトリック方式 の丸めです。 この規則は次のとおりです。
    • 最初に除去された数字が 4 以下のとき、最初に保存した数字はそのままとなる
    • 最初に除去された数字が 6 以上のとき、最初に保存した数字は増分する
    • 最初に除去された数字が 5 のとき、 最初に保存した数字は、奇数の場合増分し、偶数の場合そのままとなる。 そのため、1.5 と 2.5 のどちらも 2 となり、3.5 と 4.5 のどちらも 4 となる
    • 負の数字は同じ規則に従って丸められる

SQL 数値リテラル

引用符で囲まれていない数字ストリングのみで構成される、つまり、 小数点と指数 (12345 など) のどちらも含まない SQL リテラルは、 整数で表現できる大きさの場合は INTEGER タイプになります。 整数で表現できない大きさの場合は、DECIMAL タイプになります。

引用符で囲まれていない数字ストリングと、 オプションで小数点、および指数 (123e1 など) で構成される SQL リテラルは、 浮動小数点で表現できる大きさの場合は FLOAT タイプとなります。 整数で表現できない大きさの場合は、DECIMAL タイプになります。

キーワード DECIMAL と引用符付き数字ストリングで構成される SQL リテラルは、 小数点および指数の有無に関わらず、DECIMAL タイプとなります。 例えば、DECIMAL '42'、DECIMAL '1.2346789e+203' などです。

このリテラル・タイプのストリングには、次の値も含まれる場合もあります。
  • 'NAN'、非数値
  • 'INF'、'INFINITY'
  • '+INF'、'+INFINITY'
  • '-INF'、'-INFINITY'
  • 'MAX'
  • MIN'
これは、(大文字小文字混合の場合でも) 対応する値を示すためです。

関連概念
メッセージ・フロー
ESQL データ・タイプ
マッピング

関連タスク
メッセージ・フロー・アプリケーションの開発
ESQL の開発

関連資料
組み込みノード
ESQL INTEGER データ・タイプ
ESQL FLOAT データ・タイプ