sql查询中的数据类型

时间:2015-03-09 13:01:33

标签: mysql database

我的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

2 个答案:

答案 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