[英]mysql float data not selecting in where clause
這可能是一個簡單的問題,但我無法得到答案。 我需要 select 表中的浮點值
示例表:-
value
10.2
4.5
4.6
4.06
我的查詢
SELECT * FROM table where value = '4.6'
返回空結果集
我該如何解決這個問題!
通常,您永遠不應該使用浮點數檢查相等性(除非,可能,您有相同的對象)。 在內部,它以更精確的方式表示,即使它在輸出到屏幕時還沒有顯示給您。 這個基本原則適用於一般的計算。
有很多方案可以做到這一點,但這里有一個簡單的方案,應該是有道理的:
SELECT * FROM table where value BETWEEN 4.599 AND 4.601
使用decimal
而不是float
。
decimal(10,2) 將有 2 位且只有 2 位小數,並且可以以與整數相同的方式進行比較。 特別是對於貨幣值,您應該始終使用小數,但在不需要舍入誤差的任何地方,小數都是一個不錯的選擇。
請參閱:http://dev.mysql.com/doc/refman/5.1/en/precision-math-decimal-changes.html
今天,我也遇到了同樣的情況,通過使用 MySQL 的 FORMAT function 得到解決,它將返回與您的 WHERE 子句完全匹配的結果。
SELECT * FROM yourtable WHERE FORMAT(`col`,2) = FORMAT(value,2)
解釋:
FORMAT('col name',precision of floating point number)
希望能幫助到你。
您也可以嘗試查詢
SELECT * FROM table WHERE value LIKE 4.6;
你寫:
SELECT * FROM table where round(value, 1) = 4.6
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.