相关疑难解决方法(0)

尽管没有列包含0,但TSQL除以零

我一直试图理解为什么我的SQL查询得到了"除以零"(Msg 8134),但我必须遗漏一些东西.我想知道为什么对于下面的具体情况,我不是在寻找NULLIF,CASE WHEN...或者与我已经了解的相似(当然可以在下面的情况下使用它们).

我有一个SQL语句与计算列类似

SELECT
    TotalSize,
    FreeSpace,
    (FreeSpace / TotalSize * 100)
FROM
    tblComputer
...[ couple of joins ]...
WHERE
    SomeCondition = SomeValue
Run Code Online (Sandbox Code Playgroud)

使用上面提到的错误消息运行此语句错误,这本身不是问题 - 显然TotalSize可能是0并因此导致错误.

现在我不明白的是,TotalSize当我将计算列注释掉时,我没有任何列为0的行,我仔细检查过不是这种情况.

然后我认为由于某种原因,在使用where子句的条件进行实际过滤之前,将对整个结果集执行列计算,但是这个a)在imho和b)尝试使用a重现错误时没有意义测试设置一切正常(见下文):

INSERT INTO tblComputer (ComputerName, IsServer) VALUES ('PC0001',1)
INSERT INTO tblComputer (ComputerName, IsServer) VALUES ('PC0002',1)
INSERT INTO tblComputer (ComputerName, IsServer) VALUES ('PC0003',1)
INSERT INTO tblComputer (ComputerName, IsServer) VALUES ('PC0004',0)
INSERT INTO tblComputer (ComputerName, IsServer) VALUES ('PC0005',1)
INSERT …
Run Code Online (Sandbox Code Playgroud)

t-sql calculated-columns divide-by-zero

10
推荐指数
1
解决办法
3943
查看次数

标签 统计

calculated-columns ×1

divide-by-zero ×1

t-sql ×1