访问 MySQL 奇怪的价格字段
Posted
技术标签:
【中文标题】访问 MySQL 奇怪的价格字段【英文标题】:Access to MySQL strange price field 【发布时间】:2011-08-17 18:20:33 【问题描述】:我正在开发一个使用 ms-access 数据库的应用程序的新版本,因为它变得太慢了。
所以我决定使用 mysql 作为数据库。我对我的选择很满意。
问题是我有一个巨大的数据库,里面装满了价格。此价格在旧应用程序中正确显示,但在我的数据库中显示如下:'26,.000000.00'
,'71,9.00000.00'
,'24,9.00000.00'
。
该字段是
'price' VARCHAR(255) NOT NULL DEFAULT '0',
我不知道如何解决这个问题。这是因为数据类型还是因为应用真的很糟糕?
【问题讨论】:
您是如何将数据从 Access 传输到 MySQL 的? 我使用了一次 razor sql 和一次 Bullzip ms 访问 mysql。结果相同。 【参考方案1】:我不知道如何解决这个问题。这是因为数据类型还是因为应用真的很糟糕?
问题应该是数据类型。这个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
【讨论】:
这就是我一直在寻找的答案!谢谢!【参考方案2】:我认为您应该使用正确的数据类型来存储这些值,如果您尝试存储价格(金钱),那么您应该使用 Decimal 数据类型。
文档是这样说的:
定点(精确值)类型
DECIMAL 和 NUMERIC 类型存储精确的数字数据值。当保持精确的精度很重要时使用这些类型,例如货币数据。在 MySQL 中,NUMERIC 被实现为 DECIMAL,因此以下关于 DECIMAL 的注释同样适用于 NUMERIC。
您可以在此处阅读更多相关信息:http://dev.mysql.com/doc/refman/5.1/en/numeric-types.html
【讨论】:
尝试将类型更改为 deimal 会导致错误,例如“截断不正确的值”。这不是我要存储的数据,而是我必须恢复的数据。 我想知道你如何解释这个数字 26,.000000.00,显然你可能会丢失其中的一些零,这就是为什么你的数据必须被截断。以上是关于访问 MySQL 奇怪的价格字段的主要内容,如果未能解决你的问题,请参考以下文章
很奇怪这个var变量一定要放在事件里面。 mysql中BLOB字段内容如何查看。