Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql sql查询中的数据类型_Mysql_Database - Fatal编程技术网

Mysql 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

我的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);
但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