簡體   English   中英

mysql 浮點數據未在 where 子句中選擇

[英]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 DECIMAL 數據類型特征

今天,我也遇到了同樣的情況,通過使用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM