我正在开发一个使用ms-access数据库的应用程序的新版本,因为它变得太慢了。
所以我决定使用MySQL作为数据库。我很满意我的选择。
问题是我有一个充满价格的庞大数据库。此价格在旧应用程序中正确显示,但在我的数据库中显示如下:'26,.000000.00'
,'71,9.00000.00'
,'24,9.00000.00'
。
该字段是
'price' VARCHAR(255) NOT NULL DEFAULT '0',
我不知道如何解决这个问题。这是因为数据类型还是应用程序非常糟糕?
答案 0 :(得分: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
答案 1 :(得分:0)
我认为您应该使用正确的数据类型来存储这些值,如果您尝试存储价格(金钱),那么您应该使用十进制数据类型。
这是文档所说的:
定点(精确值)类型
DECIMAL和NUMERIC类型存储精确的数值数据值。在保持精确精度很重要时使用这些类型,例如使用货币数据。在MySQL中,NUMERIC实现为DECIMAL,因此以下关于DECIMAL的评论同样适用于NUMERIC。
您可以在此处详细了解:http://dev.mysql.com/doc/refman/5.1/en/numeric-types.html