文章
姚 鑫 · 三月 29 阅读大约需 2 分钟

第九十六章 SQL函数 MOD

第九十六章 SQL函数 MOD

注:IRIS可用,非IRIS版本不可用。

标量数值函数,返回一个数除以另一个数的模数(余数)。

大纲

MOD(dividend,divisor)

{fn MOD(dividend,divisor)}

参数

  • dividend - 数字,它是除法的分子(除数)。
  • divisor - 数字,它是除法的分母(除数)。

MOD 返回 NUMERIC 数据类型,除非被除数是数据类型 DOUBLE。如果dividendDOUBLE,则 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
0
0 11
讨论 (0)1
登录或注册以继续