当我启动此 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/