MOD スカラー関数

最初の引数を 2 番目の引数で割った剰余を戻します。

構文図を読む構文図をスキップするMOD(expression1, expression2)

スキーマは SYSIBM です。(この関数の SYSFUN バージョンは引き続き使用可能です。)

expression1
組み込み数値データ・タイプの値を戻す式。
expression2
組み込み数値データ・タイプの値を戻す式。 この式は、関数引数の少なくとも 1 つが浮動小数点である場合にのみ、ゼロにすることができます。
剰余の計算式は、次のとおりです。
MOD(x,y) = x-(x/y)*y
ここで x/y は除算の結果を整数に切り捨てた値です。

結果は、最初の引数が負である場合にのみ負になります。

引数が NULL になる可能性があるか、またはいずれの引数も 10 進浮動小数点数ではなく、dft_sqlmathwarn データベース構成パラメーターが YES に設定されている場合には、 結果は NULL になる可能性があります。 いずれかの引数が NULL の場合、結果は NULL 値になります。

結果のデータ・タイプは引数のデータ・タイプに応じて変わります。
  • 両方の引数が短精度整数の場合は短精度整数。
  • 一方の引数が長精度整数であり、他方の引数が短精度整数または長精度整数である場合は、長精度整数。
  • 両方の引数が整数であり、少なくとも一方の引数が 64 ビット整数である場合は、64 ビット整数。
  • 一方の引数が整数で、他方の引数が 10 進数である場合は 10 進数。結果は、10 進数の引数と同じ精度になります。
  • 両方の引数が 10 進数の場合は 10 進数。結果の精度は、MIN (p-s,p'-s')+(MAX(s,s') であり、位取りは (MAX(s,s') です。 ここで、ps は最初の引数の精度と位取りを表し、p's' は 2 番目の引数の精度と位取りを表します。
  • 1 つの引数が浮動小数点数で、もう 1 つが DECFLOAT でない場合は、倍精度浮動小数点。MOD 関数を実行する前に、引数が倍精度浮動小数点数に変換されます。例えば、一方の引数が浮動小数点数であり、他方の引数が整数または 10 進数の場合、 倍精度浮動小数点に変換された整数または 10 進数の一時コピーを使用して、関数が実行されます。 結果は浮動小数点数の範囲になければなりません。
  • 両方の引数が浮動小数点数である場合は倍精度浮動小数点。結果は浮動小数点数の範囲になければなりません。
  • 一方の引数が 10 進浮動小数点の場合は DECFLOAT(34) になります。 expression2 がゼロに評価される場合、結果は数値 (NaN) ではなく、関連する SQLSTATE を持つ無効な操作の警告が出されます。

    一方の引数が特殊 10 進浮動小数点値である場合、10 進浮動小数点の一般的な算術演算規則が適用されます。

  • 引数が無限大を含む場合は結果。
    • MOD(x, +/-INFINITY) は値 x を戻します。
    • MOD(+/-INFINITY, +/-INFINITY) は NaN、および関連する SQLSTATE を持つ無効な操作の警告を返します。
    • MOD(+/-INFINITY, x) は NaN、および関連する SQLSTATE を持つ無効な操作の警告を返します。

  • 例 1: ホスト変数 M1 が値 5 を持つ INTEGER で、ホスト変数 M2 が値 2 を持つ INTEGER であるとします。
     SELECT MOD(:M1, :M2)
        FROM SYSIBM.SYSDUMMY1
    結果は INTEGER のデータ・タイプを持つ 1 です。
  • 例 2: ホスト変数 M1 が値 5 を持つ INTEGER で、ホスト変数 M2 が値 2.20 を持つ DECIMAL(3,2) であるとします。
     SELECT MOD(:M1, :M2)
        FROM SYSIBM.SYSDUMMY1
    結果は DECIMAL(3,2) のデータ・タイプを持つ 0.60 です。
  • 例 3: ホスト変数 M1 が値 5.5 を持つ DECIMAL(4,2) で、ホスト変数 M2 が値 2.0 を持つ DECIMAL(4,1) であるとします。
     SELECT MOD(:M1, :M2)
        FROM SYSIBM.SYSDUMMY1
    結果は DECIMAL(4,2) のデータ・タイプを持つ 1.50 です。