MOD 标量函数 (scalar function)

MOD函数将第一个参数除以第二个参数,并返回余数。

阅读语法图跳过可视化语法图MOD( numeric-expression-1, numeric-expression-2)

该模式是 SYSIBM。

计算余数的公式为:
   MOD(x,y) = x - FLOOR(x/y) * y
其中 x/y 是除法的截断整数结果。 只有当第一个参数为负时,结果才为负。

每个参数必须是一个返回任何内置数值数据类型的值的表达式。

参数也可以是字符串或图形字符串数据类型。 字符串输入隐式转换为数值 DECFLOAT(34)。

结果可以为空; 如果任何自变量为空,那么结果为空值。

结果属性基于以下论点:

  • 如果两个参数都是整数,则结果的数据类型为整数。
  • 如果两个参数都是整数,且至少有一个参数是大整数,则结果的数据类型为大整数。
  • 如果一个参数是整数,另一个是十进制数,则结果的数据类型为十进制数,精度和范围与十进制参数相同。
  • 如果两个参数都是十进制,则结果的数据类型为十进制。 结果的精确度为 min(p-s,p'-s') + max(s,s') ,结果的比例为 max(s,s') ,其中符号ps 表示第一个参数的精确度和比例, 符号p's' 表示第二个参数的精确度和比例。
  • 如果一个参数是浮点数,而另一个参数不是 DECFLOAT,或者两个参数都是浮点数,则结果的数据类型为双精度浮点数。

    该操作以浮点形式执行。 如有必要,操作数首先转换为双精度浮点数。 例如,涉及浮点数和整数或小数数的操作,会使用转换为双精度浮点的整数或小数数的临时副本进行。 浮点运算的结果必须处于浮点数范围内。

  • 如果任一参数为 DECFLOAT,则结果的数据类型为 DECFLOAT(34)。

    如果任一参数是特殊的十进制浮点值,则适用算术运算的一般规则。 更多信息,请参阅 DECFLOAT的一般算术运算规则

    如果第一个参数是 DECFLOAT,第二个参数为零,则结果为 NaN ,并返回无效操作条件。

示例 :假设 M1 是两个主变量。 M2 是两个主变量。 求余数,除以 M1 除以 M2 的余数。
   SELECT MOD(:M1,:M2)
     FROM SYSIBM.SYSDUMMY1;
下表显示了不同 M1M2
M1 数据类型 M1 价值 M2 数据类型 M2 价值
结果
MOD(:M1,:M2)
INTEGER 5 INTEGER 2 1
INTEGER 5 小数点后三位(3,1) 2.2 0.6
INTEGER 5 小数点后三位(3,2) 2.20 0.60
小数点后4位,保留两位小数 5.50 小数点后4位,保留一位小数 2.0 1.50
DECFLOAT 1 DECFLOAT 负无穷大(F) 1
DECFLOAT -0 DECFLOAT INFINITY -0
DECFLOAT -0 DECFLOAT 负无穷大(F) -0