【发布时间】:2015-06-26 11:59:32
【问题描述】:
我在表格中有一个 4.3 的浮点值。
发送请求时:
SELECT * FROM mytable WHERE floatfield = 4.3
返回一个空结果。
即使尝试;
SELECT * FROM mytable WHERE floatfield = '4.3'
有什么问题?
【问题讨论】:
标签: mysql floating-point where-clause
我在表格中有一个 4.3 的浮点值。
发送请求时:
SELECT * FROM mytable WHERE floatfield = 4.3
返回一个空结果。
即使尝试;
SELECT * FROM mytable WHERE floatfield = '4.3'
有什么问题?
【问题讨论】:
标签: mysql floating-point where-clause
Floating-point does not have infinite precision 和 4.3 不能用有限的二进制数字精确表示。
【讨论】:
使用 Column LIKE float 而不是 Column = float。不要了解这背后的术语,它可能只是从值的开头匹配或删除看不见的精度数字并将其视为 varchar。
【讨论】:
您可以使用以下功能:
DELIMITER $$
DROP FUNCTION IF EXISTS `x_cast_to_float`$$
CREATE FUNCTION `x_cast_to_float`(number FLOAT) RETURNS FLOAT
NO SQL
BEGIN
RETURN number;
END$$
DELIMITER ;
SELECT * FROM mytable WHERE floatfield = x_cast_to_float(4.3)<br />
【讨论】: