【问题标题】:MySQL - storing numbers with decimal pointMySQL - 存储带小数点的数字
【发布时间】:2011-09-07 09:15:44
【问题描述】:

有没有办法在数据库中存储带或不带小数点的数字?用户可以将数字存储到数据库中,例如 1010.1 - 为了在 MySQL 中存储数字,我使用数据类型列 decimal,因此对于本示例,在数据库中将存储 10.0010.10

但我需要按用户存储数字的确切形式 - 因此在本例中为 0 1010.1

是否可以在数据库级别解决它或者我必须在应用程序级别进行编辑?

【问题讨论】:

  • 这不是存储问题,而是显示问题。因此,它与数据库无关。如果用户实际输入了10.0,你会怎么做?
  • 显示您用来显示存储值的代码,这就是您的问题所在。
  • 我能够在代码中解决它,但我很感兴趣是否可以用更清晰的方式来解决它 - 例如。直接在数据库中。它看起来可能不是,所以我必须为它编写一个自己的函数。

标签: mysql numbers decimal points


【解决方案1】:

使用case

case format(@number,0)=@number 
  when 1 then format(@number,0) 
  else 
  case format(@number,1)=@number 
    when 1 then format(@number,1) 
    else @number
  end 
end

if

if (format(@number,0)=@number, format(@number,0),
  if (format(@number,1)=@number, format(@number,1), @number))

【讨论】:

    【解决方案2】:

    一种方法是当您进行选择查询以省略此前导零时

    http://www.foscode.com/remove-trailing-zeros-mysql-decimal-fields/

    【讨论】:

      【解决方案3】:

      您可以将用户输入的任何内容保存为 VARCHAR,这样您就可以准确存储他们输入的内容。然后在需要的时候,可以从DB中加载,根据需要解析成对应的float值。

      【讨论】:

      • 在我的国家,我们称之为“胳膊疼?砍头!”治疗。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-01
      • 1970-01-01
      • 2011-10-12
      • 1970-01-01
      • 2012-07-03
      • 2013-09-02
      相关资源
      最近更新 更多