【问题标题】:MySQL is cutting '00' in decimalsMySQL 正在以小数形式删除“00”
【发布时间】:2013-03-12 18:51:39
【问题描述】:

我有一个小数列,长度 = 9,小数 = 2。

如果我输入21.59 的值(例如),它会工作ok

如果我输入52.00,它只会写入52。我需要保留52.00

大师问题:数据库可以这样存储值吗?代替 在 select 中使用 format/cast 来检索值...

如下所述,这是有道理的:

“您不必担心数据库中的显示格式问题 级别,但在...显示级别”

【问题讨论】:

  • 使用字符串列类型,而不是十进制?
  • 我不想使用变通方法。谢谢
  • 您不应该担心数据库级别的显示格式问题,而是...显示级别...以其显示格式存储的数据(基本上必须是字符串)非常难以处理有且不灵活。
  • 你可以找到你需要的here
  • int 与.00 没有什么意义,除非您将其作为string。看看php.net/manual/pl/function.number-format.php

标签: mysql


【解决方案1】:

使用FORMAT函数:

select format(mycolumn, 2) from mytable;

这还具有将千位分隔符添加到数字中的效果,因此您将获得类似123,456.70 的输出。如果这对您不起作用,有一些解决方法。

鉴于 MySQL 没有世界上最好的数字格式化工具,因此此类显示问题通常在客户端代码中处理。

【讨论】:

  • OP 想要存储带有小数的信息,而不仅仅是显示它
  • 信息已被存储。问题是它没有被显示
  • @hd1 .00 是多余的信息。应该没有理由将其保存在数据库中。
  • 我同意@Juhana。数据库确实试图帮助你。想象一下,您有一百万个带有.00 的号码。那是 300 万个额外的空字节堵塞了您的硬盘驱动器并减慢了您的数据库。有很多东西要记住。无论如何,请重新格式化您的 view 中的数字
  • 其实那些.00已经在那里了。它们总共占用不到 1 个字节。从 5.0.3 版本开始,MySQL 使用二进制表示而不是字符串来存储数字。见dev.mysql.com/doc/refman/5.0/en/…
猜你喜欢
  • 1970-01-01
  • 2017-10-23
  • 1970-01-01
  • 2020-09-25
  • 2013-01-19
  • 2020-01-23
  • 2016-06-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多