【问题标题】:如何在 SQL 中格式化以千为单位的数字
【发布时间】:2022-01-23 13:19:51
【问题描述】:

我正在尝试使用 SQL 将 238350.50 之类的数字格式化为“238”。我使用ROUND(number_x, -3) 四舍五入到最近的千位,它工作正常,但我无法摆脱数百位数字。更多关于格式化应该如何工作的例子:

  • 499.99 变成 0
  • 500变成1
  • 1250变成1
  • 22500 变成 23
  • 231600 变成 232

你可以把它想象成 "k" 格式 f.e. 10.000 变为“10k”。

感谢您的帮助!

【问题讨论】:

  • 标记您正在使用的 DBMS(即MS SQLOracle 等)。
  • 要获得一个小一千倍的数字,请使用除法运算符:number_x / 1000。在不同的 SQL 方言中,以非舍入方式去除小数位是不同的,您没有标记,但您可以使用 ROUND(number_x / 1000 - 0.5) 解决。

标签: sql number-formatting


【解决方案1】:

将它除以 1000,然后除以 1000

ROUND(number_x, -3)/1000
with cte as (
select 499.99 as number_x from dual
union all select 500 from dual
union all select 1250 from dual
union all select 22500 from dual
union all select 231600 from dual
)
select number_x, ROUND(number_x, -3)/1000 as new_number_x
from CTE
NUMBER_X NEW_NUMBER_X
499.99 0
500 1
1250 1
22500 23
231600 232

或者先除,再舍入。

ROUND(number_x/1000)

【讨论】:

  • 显然我脑残了一秒钟,忘记了基本的数学......非常感谢!
猜你喜欢
  • 1970-01-01
  • 2011-03-21
  • 1970-01-01
  • 2020-10-16
  • 1970-01-01
  • 1970-01-01
  • 2017-08-23
  • 2014-11-16
  • 2023-01-06
相关资源
最近更新 更多