2009-12-01 91 views
1

我非常懷疑我的數據庫的數據類型,我需要使用不同的測量單位,因爲我有不同的元素和不同的比例尺,我確信有關極限因爲我把它們從標準元素中拿走,但是我擔心這個變種。

只要考慮我和100克產品一起工作,並從中獲取所有元素,那麼,我肯定我不能超過100克蛋白質,但是我可以達到3500千焦耳或3.27毫克鐵元素。
克,毫克,微克和千焦最好的mysql數據類型

因此,我需要各種數據類型,但我不確定正確的類型。
我將展示的最高值更加明確了單位的限制:

grams   99,99 g 
milligrams 9999,99 mg 
micrograms 99999 µg 
kilojoule 9999 kj 

那麼,什麼是正確的做法?
我確定最好的方法(最好的性能)是用各自的標準值存儲各種元素(例如卡路里的千焦耳),但是數據類型是什麼?

回答

2

對於在MySQL的當前版本的999999.9999最大小數,你需要定義字段:

DECIMAL (10, 4) 

(它與DECIMAL(6容易混淆,4)是舊版本正確MySQL的,但就是不正確最新)

SEE:

Decimal(3,2) values in MySQL are always 9.99

What does M,D mean in decimal(M,D) exactly?

+0

感謝,完美的答案,尤其是與不同的MySQL版本,所以你建議我TU使用基於最大不同小數類型或一個對所有 – vitto 2009-12-01 19:54:32

+0

值,您提供: x_in_grams DECIMAL(4,2), x_in_milligrams DECIMAL(6,2), x_in_micrograms MEDIUMINT, x_in_kilojoule SMALLINT – micahwittman 2009-12-01 20:29:25

-1

我認爲你可以選擇這種數據的DECIMAL數據類型。您可以指定在逗號和之後需要存儲多少個符號。 像這樣:

DECIMAL (6, 4) 

意味着您可以在此字段存儲最大999999.9999值。

+0

DECIMAL(6,4)僅在舊版本的MySQL正確。更多信息在我的答覆帖子中。 – micahwittman 2009-12-01 19:20:24

+0

對於任何最新版本的mysql,decimal(6,4)都指定一個十進制數,其最大值爲99.9999,由SQL標準規定,NOT 9999.99(即精度是包括小數點後的數字? – 2016-04-04 23:28:35

0

根據需要使用MySql DECIMAL,並使用精度。 FLOAT可能無法準確存儲所需的精度。