访问 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 奇怪的价格字段的主要内容,如果未能解决你的问题,请参考以下文章

MySql Bit字段查询的奇怪问题

很奇怪这个var变量一定要放在事件里面。 mysql中BLOB字段内容如何查看。

PHP:如何访问 phpMyAdmin / php.ini 和 extension_dir 之间的奇怪冲突

结构中字段对齐的奇怪行为

从 .mdb 字段名称中删除奇怪的字符

PhpMyAdmin 正在将 varbinary 导出为奇怪的字符而不是 HEX