DECIMAL(m,n)在 64 位 MySQL 實作中,列規范與該列的實際表示之間有什么關系?
我在我知道我需要一個精確值(因此DECIMAL)并且我不知道我對小數部分的截斷錯誤有多敏感的背景關系中定義表。因此,我想選擇一個合理使用底層存盤的列規范(我知道它是一個 64 位系統)。
盡管進行了合理的搜索,但我還沒有在 MySQL 檔案中找到答案。
uj5u.com熱心網友回復:
如果您使用的是 64 位 MySQL 版本,則無關緊要。DECIMAL 支持大于 64 位的精度。
DECIMAL 每 9 位數字使用 4 個位元組,剩余數字使用額外的位元組。例如,DECIMAL(32,0) 最多支持 9 9 9 5 位。它將為前 27 位數字使用 4 4 4 個位元組,然后為其余 5 位數字使用 3 個位元組。一共12 3,即15個位元組。
十進制值的小數部分(小數點后)類似地存盤數字。所以 DECIMAL(32,9) 最多支持 9 9 5 位的整數部分和另外 9 位的小數部分。因此整數部分為 4 4 3 個位元組,小數部分為 4 個位元組。
decimal2bin()在此函式
的代碼注釋中,有更詳細的示例以及位元組的示例: https ://github.com/mysql/mysql-server/blob/8.0/strings/decimal.cc#L1282-L1343
uj5u.com熱心網友回復:
要定義資料型別為 DECIMAL 的列,請使用以下語法:
column_name DECIMAL(m,n);
在上面的語法中:
- m是表示有效位數的精度。m的范圍是 1 到 65。
- n是表示小數點后位數的刻度。n的范圍是 0 和 30。MySQL 要求n小于或等于 (<=) m。
這DECIMAL(m,n)意味著該列最多可以存盤m位,n位小數。小數列的實際范圍取決于精度和小數位數。
除了DECIMAL關鍵字,您還可以使用DEC, FIXED, 或NUMERIC因為它們是 的同義詞DECIMAL。
uj5u.com熱心網友回復:
MySQL - 定點數值資料
Objective: 介紹MySQL中用于表示定點數值資料的DECIMAL型別。
我們已經討論了在 MySQL 表中輸入整數資料INTEGER的型別。但是假設我們必須定義一個欄位來存盤某個專案的確切歐元價格;很明顯,我們需要另一種型別的表示,它允許我們輸入美分的小數位。
為了存盤具有精確十進制數字的數字,也稱為定點(與一般實數的浮點相反,我們將在后面討論),MySQL 具有 DECIMAL 資料型別,可以簡化為 DEC。
它的語法是 DECIMAL(m,n),其中 m 是總的最大位數(包括小數部分),n 是小數點后的位數。
例如:假設您知道一件商品的歐元價格總是低于 100 歐元。也就是說,最高價格為 99'99 歐元。我們將如何表示這種型別的列?
最大位數為四位,其中兩位是十進制的,因此該欄位可以定義為DECIMAL(4,2)。
此定義包括負數,因此涵蓋的全部數字范圍是從-99'99 到 99'99。
讓我們創建一個簡單的示例表來存盤訂單,我們將在其中包含商品名稱、訂購數量和單價(我們將限制在 1000 歐元以下)。
CREATE TABLE orders(
articles VARCHAR(25),
quantity INT,
price DEC(5,2)
);
請注意我是如何定義價格欄位的:我輸入了 5,因為它是數字的總數(逗號之前的三位和逗號之后的兩位)。
讓我們回顧一下它的結構:
mysql> DESC orders;
---------- -------------- ------ ----- --------- -------
| Field | Type | Null | Key | Default | Extra |
---------- -------------- ------ ----- --------- -------
| articles | varchar(25) | YES | | NULL | |
| quantity | int(11) | YES | | NULL | |
| price | decimal(5,2) | YES | | NULL | |
---------- -------------- ------ ----- --------- -------
3 rows in set (0.00 sec)
With all that we have already seen, although we are still missing more field types, you can make your first steps designing tables. Soon we will be introducing data already to those empty structures...
URL : http://elclubdelautodidacta.es/wp/2012/05/mysql-datos-numericos-de-coma-fija/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/450605.html
標籤:mysql
上一篇:使用PHP對資料庫列中的值串列執行完全匹配的SQL資料庫查詢
下一篇:從表中選擇沒有反向的資料
