【问题标题】:Remove trailing zeros only from int numbers仅从 int 数字中删除尾随零
【发布时间】:2017-11-30 08:24:58
【问题描述】:

我在 db 中有十进制列,并尝试使用 php 中的查询仅从 int 数字(100、200、300)中删除尾随零。我尝试使用修剪/投射功能,但 10.50 变成了 10.5。

SELECT TRIM(TRAILING '0' FROM `my_column`) FROM `mytable`

200.00

10.50

247.09

将显示为

200

10.50

247.09

【问题讨论】:

  • 该列的数据类型是什么?
  • 日期类型为:DECIMAL(7,2)
  • TRIM(TRAILING '.00' FROM `my_column`) 工作吗?
  • @SalmanA 是的,适用于所有数字。谢谢! :)
  • 嗨,再次。使用 SUM() 函数时它不起作用.. 我试图从两个数字中获取总和并修剪结果但失败了。 E.G 2.50 + 3.20 = 5.7 必须是 5.70

标签: mysql phpquery


【解决方案1】:

使用case expression 来确定一个数字是否为使用ceil() 的整数,以及它是否是带有零位小数的格式,如果不是带有2 个小数。

SELECT
      CASE WHEN ceil(n) = n THEN format(n, 0) ELSE format(n, 2) END
FROM (
      SELECT
            1234.5 AS n
      UNION ALL
      SELECT
            1234
    ) d

【讨论】:

  • 这仅适用于 1234。如果我有 10 条带整数的记录怎么办?
  • 你也可以测试n % 1(0表示没有小数部分)。
猜你喜欢
  • 1970-01-01
  • 2020-08-09
  • 2012-07-01
  • 2012-07-02
  • 2011-05-30
  • 2014-08-09
  • 2015-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多