我在表中有4.3浮點值。浮點值無法實現WHERE子句
當發送該請求:
SELECT * FROM mytable WHERE floatfield = 4.3
是返回一個空結果。
即使嘗試;
SELECT * FROM mytable WHERE floatfield = '4.3'
什麼問題?
我在表中有4.3浮點值。浮點值無法實現WHERE子句
當發送該請求:
SELECT * FROM mytable WHERE floatfield = 4.3
是返回一個空結果。
即使嘗試;
SELECT * FROM mytable WHERE floatfield = '4.3'
什麼問題?
Floating-point does not have infinite precision和4.3
不能完全用有限數量的二進制數字表示。
二進制浮點(世界上幾乎每個計算機系統使用的)都不能在有限數量的位中精確地表示4.3。 – 2011-05-07 14:20:38
@Donal:是的,那個。 – 2011-05-07 14:20:58
使用列LIKE float而不是Column = float。不要理解這個術語,它可能只是從值的起始處開始匹配,或者刪除看不見的精確數字並將其視爲varchar。
答案適用於我的情況,但是對它的工作原理的技術解釋會受到歡迎。 – Nilzor 2013-03-20 10:14:54
您可以使用以下功能:
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 />
檢查這個問題:http://stackoverflow.com/questions/2188139/check-for-equality-on-a-mysql-float-field – 2011-05-07 15:28:48