MySQL 8.4 發行說明
MySQL 提供精確數學的支援:數值處理會產生極為精確的結果,並高度控制無效值。精確數學基於以下兩個功能:
SQL 模式,控制伺服器在接受或拒絕無效資料時的嚴格程度。
MySQL 用於定點算術的程式庫。
這些功能對數值運算有幾個含義,並提供高度符合標準 SQL 的功能
精確計算:對於精確數值,計算不會引入浮點錯誤。而是使用精確度。例如,MySQL 將
.0001
等數字視為精確值,而不是近似值,並將其加總 10,000 次會產生精確的1
結果,而不是僅僅「接近」 1 的值。定義完善的捨入行為:對於精確數值,
ROUND()
的結果取決於其引數,而不是環境因素(例如底層 C 程式庫的工作方式)。平台獨立性:對精確數值執行的運算在不同平台(例如 Windows 和 Unix)上相同。
控制對無效值的處理:溢位和除以零是可偵測的,並且可以視為錯誤。例如,您可以將對於欄位而言過大的值視為錯誤,而不是將值截斷以使其位於欄位資料類型的範圍內。同樣地,您可以將除以零視為錯誤,而不是產生
NULL
結果的運算。選擇採用哪種方法取決於伺服器 SQL 模式的設定。
以下討論涵蓋了精確數學如何運作的幾個方面,包括可能與舊應用程式不相容的情況。最後,提供了一些範例,示範 MySQL 如何精確地處理數值運算。如需控制 SQL 模式的資訊,請參閱第 7.1.11 節,「伺服器 SQL 模式」。