2011-05-03 114 views
0

我正在開發使用ms-access數據庫的應用程序的新版本,因爲它變得太慢了。 所以我決定使用MySQL作爲數據庫。我很滿意我的選擇。 問題是我有一個龐大的數據庫充滿了價格。該價格在舊應用程序中正確顯示,但在我的數據庫中顯示如下:'26,.000000.00''71,9.00000.00''24,9.00000.00'。 該字段是訪問MySQL奇怪的價格字段

'price' VARCHAR(255) NOT NULL DEFAULT '0', 

我不知道如何解決這個問題。這是因爲數據類型還是因爲應用程序非常糟糕?

+0

您是如何將Access數據傳輸到MySQL的? – 2011-05-03 14:22:04

+0

我曾經使用過一次razor sql和一次bullzip ms訪問mysql。相同的結果。 – Simone 2011-05-03 14:31:42

回答

0

我認爲你應該使用正確的數據類型來存儲這些值,如果你試圖存儲價格(金錢),那麼你應該使用十進制數據類型。

這是個什麼文件說:

定點(準確值)類型

的decimal和numeric類型存儲精確的數值數據。使用這些類型時,重要的是要保留精確的精度,例如使用貨幣數據。在MySQL中,NUMERIC被實現爲DECIMAL,所以關於DECIMAL的以下評論同樣適用於NUMERIC。

你可以閱讀更多關於這一點,在這裏:http://dev.mysql.com/doc/refman/5.1/en/numeric-types.html

+0

嘗試將類型更改爲「最小結果」,例如「截斷不正確的值」。這不是我存儲的數據,而是我必須恢復的數據。 – Simone 2011-05-03 14:29:36

+0

我想知道如何解釋這個數字26,.000000.00,顯然也許你會失去一些零,這就是爲什麼你的數據必須被截斷。 – PachinSV 2011-05-03 17:28:02

3

我不知道如何解決這個問題。這是因爲數據類型還是因爲應用程序非常糟糕?

問題應該是數據類型。這thread將幫助您選擇一個。

另外,您可能會希望將您的列轉換爲十進制(或其他數字)類型。 它是這樣

  • 添加所需 類型的新列,ALTER TABLE herpderp add new_price Decimal (19,4)
  • 從舊柱填充它(你需要一個 方便的功能,您 字符串轉換爲數字)update herpderp set new_price = handy_function(price)
  • 刪除舊列ALTER TABLE herpderp DROP COLUMN price
  • 新列 重命名爲舊名稱ALTER TABLE herpderp CHANGE COLUMN new_price price
+0

這是我正在尋找的答案!謝謝! – Simone 2011-05-03 14:38:21

+0

Simone,我很高興它有幫助 – bpgergo 2011-05-03 14:44:47