asp.net - 遇到除零错误

标签 asp.net sql divide-by-zero

当我启动此 SQL 查询时,出现除以零的错误:

SELECT CONVERT(VARCHAR(11),CaptureTime,106) 'CaptureTime',
        Type,
        CASE WHEN Unit='g/L' THEN (data1* 0.02586) ELSE data1 END As data1,
        CASE WHEN Unit='g/L' THEN nullif(data2* 0.02586,0) ELSE data2 END As data2,
        CASE WHEN Unit='g/L' THEN nullif(data3* 0.02586,0) ELSE data3 END As data3,
        CASE WHEN Unit='g/L' THEN nullif(data1* 0.02586,0) / nullif(data2* 0.02586,0) ELSE (data1/data2) END As Ratio,
        CASE WHEN Unit='g/L' THEN 'ml/L' ELSE 'ml/L' END As data,
        CASE WHEN Unit='g/L' THEN (data4* 0.01129) ELSE data4 END As data4
FROM something 
where Type ='DATA'
and ID='" + Session["name"].ToString() + "'
Order By CONVERT(DateTime, CaptureTime,101) DESC

最佳答案

错误几乎肯定来自这里的第二行:

CASE WHEN Unit='g/L' THEN nullif(data1* 0.02586,0) / nullif(data2* 0.02586,0) " +
    "ELSE (data1/data2)" +  
    "END As Ratio,"

如果单位不是总帐且 data2 为 0,您将收到错误消息。将其更改为:

CASE WHEN Unit='g/L' THEN nullif(data1* 0.02586,0) / nullif(data2* 0.02586,0) " +
    "ELSE (data1/NULLIF(data2, 0))" +  
    "END As Ratio,"

关于asp.net - 遇到除零错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13136406/

相关文章:

c# - 有条件地隐藏或显示 Aspx 菜单控制项

sql - For 循环控制变量、嵌套 ResultSet SQL 无效

mysql - hive中使用hadoop的基本sql查询问题

c - 除以零不会导致 Nvidia Jetson 运行时异常

c++ - 除以零预防 : Checking the divisor's expression doesn't result in zero vs. 检查除数不为零?

z3 - 是否有可能在 Z3 中或在传递到 Z3 之前检测到不一致的方程?

javascript - 在文本区域显示选定的文本

asp.net - 通过 ASP.NET 应用程序启用 process.start 需要哪些权限?

asp.net - Ocelot 的文档 - 身份验证

sql - 如何检查列表是否具有任何不同的值