首页 > 解决方案 > TSQL 太奇怪了,除法在选择中不起作用(但 * - + 工作正常),但仅适用于一列

问题描述

我有一个奇怪的问题:

select ****
COALESCE(Customers / (NULLIF(Visitors,0)),0) AS CR

对于 3/3 返回 1 对于 157/2 返回 0 或任何其他非 1 将返回 0。

CR 是十进制(8,2),对于所有其他列,同一行正在工作(不同列的混合)

我已经尝试过 + - *,一切正常,但是一旦我使用除法,它就不会返回一个值,除非是一个。

到底是怎么回事 ???为什么除法不起作用,而所有其他算术函数都可以正常工作。看起来它不会返回小数...

标签: tsql

解决方案


无法复制您的结果,但也许这将有助于澄清。

例子

Declare @T table (Customers int,Visitors int)
Insert Into @T values
(2,157),
(5,14),
(2,0),
(null,25),
(15,null)

select CR = IsNull((Customers+0.0) / nullif(Visitors,0),0)
 From  @T

退货

CR
0.012738853503
0.357142857142
0.000000000000
0.000000000000
0.000000000000

推荐阅读