在SQL的除法函数之后添加.00的特殊之处

我知道这是一个简单的问题。但是有人可以告诉我为什么year / 100的结果与year / 100.00不同吗?

year / 100的结果为> 1 但 year / 100.00会导致

例如:

表:年份

列:

    year(1601)

    year(2000)

预期结果将返回

   (17)
   (20)

计算是如果变量除以100,而余数大于0,则将其四舍五入并加1。如果除以后,其余为0,则保留整数。

   year    yr1         yr2
   1601   0.1601E2      16
   2000   0.2E2         20

这是我用来计算yr1和yr2的代码 yr1:年份/100.00 yr2:年/ 100

有人可以帮助解释使用“ 100”或“ 100.00”的区别吗?

谢谢

lcmseven 回答:在SQL的除法函数之后添加.00的特殊之处

在SQL Server中,算术运算产生的数据类型与操作数的数据类型相同。因此,integer / integer产生一个整数,因此1601/100 = 16。

如果操作数是不同的数据类型,则具有较低数据类型优先级的操作数将转换为另一个操作数的数据类型。在您的示例中,1601是整数,而100.00是表示decimal(5,2)十进制文字。因此,首先将整数转换为decmial进行除法,结果为1601 / 100.00 = 16.010000;结果为decimal(12,6)类型。您甚至可以使用100.0100.文字获取相同的结果。

有关更多详细信息,请参见datatype precedenceprecision/scale calculation

本文链接:https://www.f2er.com/2901779.html

大家都在问