我的sql查询如下:
SELECT (pass*100)/total as result from Runs where runId=1
我希望结果是十进制类型。我试过了:
SELECT
cast((pass*100)/total as decimal(4,2)) as result
from Runs where runId=1
我在计算中使用此查询返回的值,所以我已经完成了:
protected decimal d1;
decimal.TryParse(reader["result"].ToString(), out d1);
但是当它应该具有83.4
时,d1的值为83答案 0 :(得分:0)
尝试:
SELECT
(1pass* cast(100 as decimal(4,2))/total ) as result
from Runs where runId=1
答案 1 :(得分:0)
您需要将至少一个参数转换为浮点数,否则所有数学运算都将作为整数数学运算。
最简单的解决方案可能是将100
更改为100.0
,将常量转换为浮点值:
SELECT (pass*100.0)/total as result from Runs where runId=1
即使您没有在计算中使用常数,也可以更容易(更少输入)来强制转换这样的整数而不是使用CAST()
:
SELECT int_col1 * 1.0 / int_col2 AS result FROM table1