首頁  >  文章  >  資料庫  >  為什麼我的 MySQL SELECT 查詢在比較浮點數時會失敗,但在刪除比較時卻有效?

為什麼我的 MySQL SELECT 查詢在比較浮點數時會失敗,但在刪除比較時卻有效?

Patricia Arquette
Patricia Arquette原創
2024-10-28 16:29:29450瀏覽

Why Does My MySQL SELECT Query Fail When Comparing Floats, But Works When I Remove the Comparison?

解決MySQL SELECT 查詢中的浮點比較問題

在MySQL SELECT 查詢中,比較浮點值時可能會出現精確度問題。為了解決這個問題,讓我們探討以下問題:

問題:

為什麼帶有浮點相等比較的SELECT 查詢會失敗,而刪除比較會回傳正確的結果排?如何在運算前將浮點數轉換為2位元才能成功配對?

答案:

問題源自於MySQL固有的浮點精確度。為了解決這個問題,我們可以將 float 列轉換為小數類型,這可以確保精確到特定位數。

解:

以下查詢成功配對將浮點數值轉換為小數:

SELECT * FROM `table` WHERE CAST(`price` AS DECIMAL) = CAST(101.31 AS DECIMAL);

替代解:

或者,您可以考慮將價格列更改為DECIMAL,這更適合用於處理貨幣值並提供更好的精確控制。

以上是為什麼我的 MySQL SELECT 查詢在比較浮點數時會失敗,但在刪除比較時卻有效?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn