我的数据库中的Hello我有一个带有数字的列,例如6.251543423我想让它们像6.25一样没有舍入它们。
我已经尝试了update examresults set point = substring(point,0,5)
,但它将所有值都返回为零
答案 0 :(得分:2)
如果你不想圆,你必须截断:
TRUNCATE(6.251543423,2)
当您CAST
为DECIMAL(n,2)
或FLOAT(n,2)
时,结果将被舍入。
答案 1 :(得分:1)
将浮点值转换为DECIMAL数据类型,小数点后面有适当的位数。在此示例中,小数点后的两位数。
SELECT CONVERT(float_col,DECIMAL(65,2)) AS dec_col
FROM ...
浮点类型FLOAT和DOUBLE是近似十进制值。它们存储在标准IEEE浮点表示中。
如果转换为十进制,然后将其存储回浮点列,则会将其转换回浮点表示。
当您再次将值拉回时,您需要转换为DECIMAL。
如果要存储精确的十进制表示,则需要将值存储在定义为DECIMAL(或NUMERIC)数据类型的列中,而不是FLOAT或DOUBLE。
另外......
MySQL允许非标准语法:FLOAT(M,D)或REAL(M,D)或DOUBLE PRECISION(M,D)。这里,“(M,D)”表示总共可以存储最多M位的值,其中D位可以在小数点之后。例如,
(摘自MySQL参考手册:https://dev.mysql.com/doc/refman/5.5/en/floating-point-types.html)
(注意:我从未运用/测试DOUBLE(18,2)
的行为。当我们需要精确的小数时,我们使用DECIMAL。当我们需要浮点数时,我们使用普通的旧DOUBLE。)