第九十六章 SQL函数 MOD
注:IRIS可用,非IRIS版本不可用。
标量数值函数,返回一个数除以另一个数的模数(余数)。
大纲
MOD(dividend,divisor)
{fn MOD(dividend,divisor)}
参数
dividend - 数字,它是除法的分子(除数)。divisor - 数字,它是除法的分母(除数)。
MOD 返回 NUMERIC 数据类型,除非被除数是数据类型 DOUBLE 。如果dividend 为 DOUBLE ,则 MOD 返回 DOUBLE 。
描述
MOD 返回除数除数的数学余数(模数)。
MOD 可以指定为标准标量函数或带有大括号语法的 ODBC 标量函数。
- 如果被除数和除数为正数,则返回正数模数或零。
- 如果被除数和除数都是负数,则返回负模数或零。
- 如果被除数或除数为
NULL ,则返回 NULL 。 - 如果除数为
0 ,它将生成带有 %msg <DIVIDE> 错误的 SQLCODE -400 。 - 如果除数大于被除数,则返回被除数。
MOD (任一语法形式)报告的精度与算术表达式除数/除数的精度报告相同。
ANSI 运算符优先级
具有单个负操作数的 MOD 函数的行为取决于 Apply ANSI Operator Precedence 配置设置:
- 如果未应用
Apply ANSI Operator Precedence ,则带有负操作数的 MOD 的行为与 # 模运算符相同。两者都返回短计数(达到下一个倍数所需的数量),而不是模数。例如,12#7 返回模数 5 ; –12#7 返回短计数 2 。如果被除数为负,短计数为正值或零。如果除数为负,则短计数为负值或零。 - 如果应用了
Apply ANSI Operator Precedence (IRIS 2019.1 及后续版本的默认设置),带有负操作数的MOD 的行为是始终返回模数。如果被除数为负,则返回负模数或零。如果除数为负,则返回正模数或零。
# modulo operator 的行为不受应用 ANSI 运算符优先级配置设置的影响。
示例
以下示例显示了 MOD 返回的余数。
SELECT MOD(5,3) AS Remainder
2
SELECT MOD(5.3,.5) AS Remainder
0.3
|