Mysql sql查询中的数据类型
我的sql查询如下:Mysql sql查询中的数据类型,mysql,database,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"].T
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);
但d1的值为83,而它本应为83.4
SELECT
(1pass* cast(100 as decimal(4,2))/total ) as result
from Runs where runId=1
您需要将至少一个参数强制转换为浮点,否则所有的数学运算都将作为整数运算完成 最简单的解决方案可能是通过将
100
更改为100.0
将常量转换为浮点值:
SELECT (pass*100.0)/total as result from Runs where runId=1
即使在计算中没有常数可供利用,也可以像这样转换整数,而不是使用cast()
:
通行证和总列的类型是什么?请澄清“不起作用”-错误?还是返回整数?pass和total只是简单地用
100.0
替换100.0
@Marcus-Brilliant!它是有效的:)我觉得没有想到这件事太傻了。请把它作为答案写下来,这样我才能把它标对为什么u除以5?@user1698232 sorry是我测试的副本。返回类型是浮点而不是十进制。可能在MySQL中将结果强制转换为十进制,或者在代码中进行转换(如果您指定为十进制类型)。
SELECT int_col1 * 1.0 / int_col2 AS result FROM table1