【问题标题】:MySQL Data type calculated fieldMySQL 数据类型计算字段
【发布时间】:2015-11-10 23:11:16
【问题描述】:

我正在尝试使用带小数的 case 语句,并且结果也是小数。我以下面的语句为例。在我的表中,myDollar 是小数,但在这里,'newDollar' 是 varChar。我尝试过使用 cast,但我不知道在哪里/如何在此处使用它。

select tab.*,
    case when flag = '1'
        then (myDollar * .525)
            else '0' end as newDollar
                from `xxx` tab;

提前致谢!

【问题讨论】:

标签: mysql casting decimal case


【解决方案1】:

请记住,除非您强制执行,否则 MySQL 将以双精度浮点执行计算,试试这个。请注意,else 0 中的 0 周围没有引号。那是因为你想要一个数值,而不是一个字符值。

SELECT CAST(case when flag = '1' then (myDollar * 0.525)
                                 else 0 end
            AS DECIMAL(10,2)) as newDollar

【讨论】:

  • 谢谢!现在这是有道理的。
【解决方案2】:

为什么不使用 IF ?

select *,
if (`flag` = '1', `myDollar` * 0.525 , 0.0) as newDollar
            from `tab`;

【讨论】:

  • 谢谢!看起来更干净,出于某种原因我选择了案例-_-
  • @kenznpunky 如果没问题,不要忘记标记“已解决”您的主题;)
  • 哦,谢谢!没有意识到我应该这样做 - :)
猜你喜欢
  • 1970-01-01
  • 2018-02-16
  • 1970-01-01
  • 1970-01-01
  • 2017-01-08
  • 1970-01-01
  • 1970-01-01
  • 2013-12-27
  • 1970-01-01
相关资源
最近更新 更多