2011-07-06 22 views
0

這個科學價值的問題我已經存儲了該數值到mysql中「1E-06」(保存在浮點型)列MySQL中,發現在數據庫

當我做了以「0.000001」這個值的搜索,我沒有得到任何比賽。有任何想法嗎?

SELECT * 
FROM `MATCH__DESTINATION` 
WHERE `W_m` = 0.000001 

回答

0

從這mailing list thread

如果不在[T]的MySQL埃格爾沒有檢測到等於浮點數,左

浮子ALWA [Y] S更大然後右鍵點擊。 1.1> 1.1 = true。

mysql> SELECT * FROM float_bug WHERE f=1.1; Empty set (0.00 sec)

它的浮點運算的不精確性。改爲使用DECIMAL類型 。

0

嘗試將匹配列和值限制爲等於小數精度,然後進行比較。

SELECT * 
FROM `MATCH__DESTINATION` 
WHERE Cast(`W_m` as Decimal(6,6)) = Cast(0.000001 as Decimal(6,6)) 
0

你在做什麼沒有問題。 SELECT不返回任何結果的唯一原因是因爲沒有匹配。幾件事情:

  1. W_m是否允許浮點值高達6位小數?

  2. 你確定這個值實際存在於你的表中嗎?您是否可以嘗試使用任何其他WHERE謂詞獲取相同記錄,即W_m作爲1e-06?如果沒有,是否有可能做一個沒有WHERE條件的SELECT *,然後手動檢查該記錄是否真的存在?