访问MySQL奇怪的价格字段

发布于 2024-11-04 23:18:54 字数 336 浏览 0 评论 0原文

我正在开发一个使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

黯淡〆 2024-11-11 23:18:54

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

问题应该是数据类型。此主题将帮助您选择一个。

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

  • 添加所需的新列
    类型,ALTER TABLE herpderp add
    new_price Decimal (19,4)
  • 从旧列中填充它(您需要一个
    方便的功能来转换您的
    字符串到数字)更新herpderp
    设置新价格=
    handy_function(price)
  • 删除旧列ALTER TABLE herpderp DROP
    COLUMN Price
  • 重命名新列
    更改为旧名称 ALTER TABLE herpderp
    更改列 new_price 价格

i do not know how to fix this. is this because of a data type or because the app was really terrible?

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

  • adding a new column of the desired
    type, ALTER TABLE herpderp add
    new_price Decimal (19,4)
  • populate it from the old column (you'll need a
    handy function to convert your
    strings to numbers) update herpderp
    set new_price =
    handy_function(price)
  • drop the old column ALTER TABLE herpderp DROP
    COLUMN price
  • rename the new column
    to the old name ALTER TABLE herpderp
    CHANGE COLUMN new_price price
随波逐流 2024-11-11 23:18:54

我认为您应该使用正确的数据类型来存储这些值,如果您尝试存储价格(金钱)那么您应该使用 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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文