访问MySQL奇怪的价格字段
我正在开发一个使用 ms-access 数据库的应用程序的新版本,因为它变得太慢了。 所以我决定使用MySQL作为数据库。我对我的选择很满意。 问题是我有一个巨大的数据库,里面装满了价格。此价格在旧应用程序中正确显示,但在我的数据库中显示如下:'26,.000000.00'
,'71,9.00000.00'
,'24,9.00000.00'
。 该领域是
'price' VARCHAR(255) NOT NULL DEFAULT '0',
我不知道如何解决这个问题。这是因为数据类型还是因为应用程序真的很糟糕?
I am developing a new version of an application that was using an ms-access database because it was becoming too slow.
So I decided to use MySQL as database. i'm happy with my choice.
The problem is that i have a huge database filled with prices. This prices are shown correctly in the old application but in my database it's shown like this: '26,.000000.00'
,'71,9.00000.00'
,'24,9.00000.00'
.
The field is
'price' VARCHAR(255) NOT NULL DEFAULT '0',
I do not know how to fix this. is this because of a data type or because the app was really terrible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
问题应该是数据类型。此主题将帮助您选择一个。
此外,您可能希望将列转换为十进制(或其他数字)类型。
这就像
类型,
ALTER TABLE herpderp add
new_price Decimal (19,4)
方便的功能来转换您的
字符串到数字)
更新herpderp
设置新价格=
handy_function(price)
ALTER TABLE herpderp DROP
COLUMN Price
更改为旧名称
ALTER TABLE herpderp
更改列 new_price 价格
The problem should be the datatype. This thread will help you choose one.
Also, you probably will want to convert your column to decimal (or other numeric) type.
It goes like
type,
ALTER TABLE herpderp add
new_price Decimal (19,4)
handy function to convert your
strings to numbers)
update herpderp
set new_price =
handy_function(price)
ALTER TABLE herpderp DROP
COLUMN price
to the old name
ALTER TABLE herpderp
CHANGE COLUMN new_price price
我认为您应该使用正确的数据类型来存储这些值,如果您尝试存储价格(金钱)那么您应该使用 Decimal 数据类型。
文档是这样说的:
定点(精确值)类型
DECIMAL 和 NUMERIC 类型存储精确的数字数据值。当需要保持准确的精度(例如货币数据)时,可以使用这些类型。在MySQL中,NUMERIC被实现为DECIMAL,因此以下关于DECIMAL的注释同样适用于NUMERIC。
您可以在此处阅读有关此内容的更多信息:http://dev。 mysql.com/doc/refman/5.1/en/numeric-types.html
I think you should use the correct data type to store those values, if you are trying to store prices (money) then you should use Decimal data type.
This is what the documentation says:
Fixed-Point (Exact-Value) Types
The DECIMAL and NUMERIC types store exact numeric data values. These types are used when it is important to preserve exact precision, for example with monetary data. In MySQL, NUMERIC is implemented as DECIMAL, so the following remarks about DECIMAL apply equally to NUMERIC.
You can read more about this, here: http://dev.mysql.com/doc/refman/5.1/en/numeric-types.html