2013-04-06 81 views
0

簡版 我試圖插入十進制值,但在插入後它爲所有十進制值存儲99.999999。我正在使用MySql 5.5.16。MySql十進制數據類型:未插入適當的值

龍版

我想創建以下

CREATE TABLE products (
    id MEDIUMINT NOT NULL AUTO_INCREMENT, 
    product_name CHAR(100), 
    group_name CHAR(100), 
    lon decimal(8,6), 
    lat decimal(8,6), 
    PRIMARY KEY (id) 
); 

與模式的表,我插入語句看起來像

Insert into products (product_name , group_name , lon, lat) values 
('Asparagus' , 'fresh vegetables' , 428743.9819 , 4512618.55); 

我插入52個價值觀,並在所有Decimal ,價值正在返回99.999999

我還試圖用FLOAT這是返回100.00000並且如果DOUBLE還我收到99.999999

任何指導將有所幫助。

+2

這是因爲您是以錯誤的方式指定列的長度。您的代碼顯示「lon decimal(8,6)' - 8個空格,6爲小數點後的數字保留。意味着你的值只能達到99.999999,這是它們可以存儲的最大數量。短版:使用'lon小數(12,6)' – 2013-04-06 08:25:54

回答

3

更改給予十進制變量的值。對我來說它工作正常。

CREATE TABLE products (
    id MEDIUMINT NOT NULL AUTO_INCREMENT, 
    product_name CHAR(100), 
    group_name CHAR(100), 
    lon decimal(15,6), 
    lat decimal(15,6), 
    PRIMARY KEY (id) 
); 
+0

太棒了!它的工作..但如何?如果實際的問題? – apaleja 2013-04-06 08:48:17

+0

它基於您傳遞給DECIMAL函數的精度數字。要進一步瞭解如何閱讀MySql文檔 – Santhosh 2013-04-07 07:04:41

0

如果您閱讀mysql doc,您會看到您需要一個decimal (13, 6),因爲第一個參數是精度...所以要找到它,您必須計算最大值的全局長度。