Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql oracle中MOD和rements的区别是什么?_Sql_Oracle11g - Fatal编程技术网

Sql oracle中MOD和rements的区别是什么?

Sql oracle中MOD和rements的区别是什么?,sql,oracle11g,Sql,Oracle11g,虽然这两个函数执行相同的操作,但即使它们产生相同的o/p,这两个函数之间的基本区别是什么?是否存在与性能相关的差异,如果有,那么哪一个更好 谢谢这一点非常清楚: 注 余数函数在其公式中使用舍入函数,而 MOD函数在其公式中使用floor函数 换句话说,当参数为正整数时,mod函数返回一个介于0和第二个参数之间的正数。余数函数返回一个绝对值小于第二个参数除以2的数字 负数之间的差异可能更为显著。一个不同的例子是: REMAINDER(-15, 4) MOD(-15, 4) 第一个给出-3,第二个

虽然这两个函数执行相同的操作,但即使它们产生相同的o/p,这两个函数之间的基本区别是什么?是否存在与性能相关的差异,如果有,那么哪一个更好

谢谢

这一点非常清楚:

余数函数在其公式中使用舍入函数,而 MOD函数在其公式中使用floor函数

换句话说,当参数为正整数时,mod函数返回一个介于0和第二个参数之间的正数。余数函数返回一个绝对值小于第二个参数除以2的数字

负数之间的差异可能更为显著。一个不同的例子是:

REMAINDER(-15, 4)
MOD(-15, 4)
第一个给出
-3
,第二个给出
1

编辑:

这里发生了什么?4变成-15的次数是多少。一种方法是“-4”次,剩余值为1。也就是说:-15=4*(-4)+1。另一个是“-3”次:-15=4*(-3)-3


差是-15/4,表示为整数。使用floor,您将获得
-4
。使用round,您可以得到
-3

在下面的示例中可以理解MOD和rements函数之间的差异:

MOD(13,5):返回3,而余数(13,5)返回-2

理解差异的一个简单方法是,MOD使用floor函数,因此它计算第一个数字中第二个数字的出现次数,并返回完成第一个数字剩下的内容,即2(5)给出10加3给出13,因此MOD(13,5)=3

然而,余数使用一个舍入函数,因此它得到第二个数的总数,该总数可以构成第一个数,然后减去超出的数。i、 e.3(5)=15,减去2得到13,因此余数(13,5)=-2

余数(-15,4):4(-4)得到-16,加上+1得到-15,因此余数(-15,4)=+1

MOD(-15,4):3(-4)得到-12,加上-3得到-15,因此MOD(15,4)=-3余数(-15,4)——使用舍入而不考虑数字的符号 考虑

         -15/4= -3.75==> floor(-3.75)= -3.--(ignore sign in floor)
          -3*4=-12
          -15-(-12)=>-3
因此-15/4=-3.75=>round(-3.75)=-4.-(在round期间忽略符号)

因此,余数(-15,4)=1

MOD(-15,4)--使用地板时不带数字符号 考虑

         -15/4= -3.75==> floor(-3.75)= -3.--(ignore sign in floor)
          -3*4=-12
          -15-(-12)=>-3
因此,MOD(-15,4)=-3 Mod(m,n)很容易理解。


查找值Mod()当我们将m除以n时,输出值将始终是手动计算的余数值

查找符号输出的符号与第一个参数保持相同

例如:

  • 例如1:mod(11,3)是11/3的剩余部分,即2,与第一个参数的符号相同。因此,输出为2

  • 例如2:mod(-11,3)是11/3的剩余部分,即2,与第一个参数的符号相同。因此,输出为-2


余数(m,n)有点不同


查找值取n的两个倍数,这样相乘时,与第一个参数(m)相比,得到最接近的下限值和最接近的上限值。这些值之间的最小差值为输出值

查找符号如果最近的值小于第一个参数,则输出值的符号始终为正;如果最近的值大于第一个参数,则输出值的符号始终为负

例如:

  • 例1:余数(10,3)小于或大于10的3的最近倍数值为9(3x3)和12(3x4)。9和12中最接近10的是9。因此,输出将是9和10之间的差距,即1。最接近的数字小于第一个参数。因此,输出为1
  • 例2:余数(11,3)小于或大于11的11的最近倍数值为9(3x3)和12(3x4)。9&12中最接近12的是12。因此,输出将是12和11之间的间隙,即1。最接近的数字大于第一个参数。因此,输出为-1

这个问题早就有了答案,但我认为一些背景知识会有所帮助

讨论“模”运算,以及它基于整数除法后余数的事实。问题是“余数”的概念在有负数的地方没有明确定义

当涉及负数时,模数和余数之间的差异是显著的。从数学上讲,模运算将整数映射到一个范围。此范围从0开始,是循环的。例如,
integer mod 3
映射到以下范围:

0, 1, 2, 0, 1, 2, …
如果给定的整数是负数,则循环简单地向后扩展。但是,如果模量本身为负值,则整个范围为负值:

0, -2, -1, 0, -2, -1, …
将其演示为带有负数的时钟

实际结果是,第二个数字的符号与结果的符号相同

但是,如果有余数,您将尝试将第二个数字除以第一个数字,直到无法继续。剩下的差额称为余数。如果第一个数字是负数,那么,如果你短停,剩余的数字将是负数

实际结果是,第一个数字的符号就是结果的符号

大多数编码语言,包括SQL的大多数变体,都使用余数计算,但通常称之为模。大多数语言使用符号
a%b
表示
a mod b

当然,甲骨文有两个功能