MySQL 8.4 發行說明
DECIMAL
和 NUMERIC
類型儲存精確的數值資料值。當需要保留精確度時(例如處理貨幣資料時),會使用這些類型。在 MySQL 中,NUMERIC
以 DECIMAL
實作,因此以下關於 DECIMAL
的說明同樣適用於 NUMERIC
。
MySQL 以二進位格式儲存 DECIMAL
值。請參閱第 14.24 節,精確數學。
在 DECIMAL
欄位宣告中,可以(而且通常會)指定精確度和比例。例如
salary DECIMAL(5,2)
在這個範例中,5
是精確度,2
是比例。精確度代表儲存值的有效位數,而比例代表小數點後可以儲存的位數。
標準 SQL 要求 DECIMAL(5,2)
能夠儲存任何具有五位數和兩位小數的值,因此可以儲存在 salary
欄位中的值範圍從 -999.99
到 999.99
。
在標準 SQL 中,語法 DECIMAL(
等同於 M
)DECIMAL(
。同樣地,語法 M
,0)DECIMAL
等同於 DECIMAL(
,其中允許實作決定 M
,0)M
的值。MySQL 支援這兩種 DECIMAL
語法的變體形式。M
的預設值為 10。
如果比例為 0,則 DECIMAL
值不包含小數點或小數部分。
DECIMAL
的最大位數為 65,但給定 DECIMAL
欄位的實際範圍可能會受到給定欄位的精確度或比例限制。當此類欄位被指派的值的小數點後位數多於指定比例允許的位數時,該值會轉換為該比例。(精確行為與作業系統相關,但通常效果是截斷為允許的位數。)