剩余數字 | 位 |
---|---|
0 | 0 |
1–2 | 1 |
3–4 | 2 |
5–6 | 3 |
7-9 | 4 |
例如,DECIMAL(19,9)
對于小數部分具有9
位數字,對于整數部分具有19
位=10
位數字,小數部分需要4
個字節。 整數部分對于前9
位數字需要4
個字節,1
個剩余字節需要1
個字節。DECIMAL(19,9)
列總共需要9
個字節。
經常使用DECIMAL
數據類型的貨幣數據,如價格,工資,賬戶余額等。如果要設計一個處理貨幣數據的數據庫,則可參考以下語法 -
amount DECIMAL(19,2);
但是,如果您要遵守公認會計原則(GAAP)規則,則貨幣欄必須至少包含4
位小數,以確保舍入值不超過$0.01
。 在這種情況下,應該定義具有4
位小數的列,如下所示:
amount DECIMAL(19,4);
首先,創建一個名為test_order
的新表,其中包含三列:id
,description
和cost
。
CREATE TABLE test_order ( id INT AUTO_INCREMENT PRIMARY KEY, description VARCHAR(255), cost DECIMAL(19,4) NOT NULL );
第二步,將資料插入test_order表。
INSERT INTO test_order(description,cost) VALUES('Bicycle', 500.34),('Seat',10.23),('Break',5.21);
第三步,從test_order表查詢數據。
SELECT * from test_order
查詢結果:
第四步,更改cost
列以包含ZEROFILL
屬性。
ALTER TABLE test_order MODIFY cost DECIMAL(19,4) zerofill;
第五步,再次查詢test_order表。
SELECT * from test_order
查詢結果:
如上所見,在輸出值中填充了許多零。
因為zerofill,當我們插入負值會報錯:
INSERT INTO test_order(description,cost)
VALUES('test', -100.11);
br>提示:
[SQL]INSERT INTO test_order(description,cost)
VALUES('test', -100.11)
[Err] 1264 - Out of range value for column 'cost' at row 1
其它插入測試結論:
當數值在其取值范圍之內,小數位多了,則四舍五入后直接截斷多出的小數位。
若數值在其取值范圍之外,則直接報Out of range value錯誤。
到此這篇關于MySQL數據類型DECIMAL用法詳解的文章就介紹到這了,更多相關MySQL數據類型DECIMAL內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!