访问MySQL奇怪的价格字段

时间:2011-05-03 14:10:16

标签: mysql database ms-access types sqldatatypes

我正在开发一个使用ms-access数据库的应用程序的新版本,因为它变得太慢了。 所以我决定使用MySQL作为数据库。我很满意我的选择。 问题是我有一个充满价格的庞大数据库。此价格在旧应用程序中正确显示,但在我的数据库中显示如下:'26,.000000.00''71,9.00000.00''24,9.00000.00'。 该字段是

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

我不知道如何解决这个问题。这是因为数据类型还是应用程序非常糟糕?

2 个答案:

答案 0 :(得分:3)

  

我不知道如何解决这个问题。这是因为数据类型还是应用程序非常糟糕?

问题应该是数据类型。这个thread会帮助您选择一个。

此外,您可能希望将列转换为十进制(或其他数字)类型。 它就像

  • 添加所需的新列 type,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

答案 1 :(得分:0)

我认为您应该使用正确的数据类型来存储这些值,如果您尝试存储价格(金钱),那么您应该使用十进制数据类型。

这是文档所说的:

定点(精确值)类型

DECIMAL和NUMERIC类型存储精确的数值数据值。在保持精确精度很重要时使用这些类型,例如使用货币数据。在MySQL中,NUMERIC实现为DECIMAL,因此以下关于DECIMAL的评论同样适用于NUMERIC。

您可以在此处详细了解:http://dev.mysql.com/doc/refman/5.1/en/numeric-types.html