You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MySQL中格式化数字为千位简写格式(如100K)

MySQL实现数字千位简写格式转换

你提到的FORMAT()函数主要用于生成带千位分隔符的数字字符串(比如把100000转成100,000),并不适合直接生成100K这类简写格式。要实现需求,可以通过条件判断+数值运算+字符串拼接来完成,以下是具体方案:

基础实现(仅处理千位K)

如果只需要将≥1000的数字转为XK格式,小于1000的保持原数,可以使用CASE WHEN配合FLOOR()取整:

SELECT 
  original_number,
  CASE
    WHEN original_number >= 1000 THEN CONCAT(FLOOR(original_number / 1000), 'K')
    ELSE CAST(original_number AS CHAR)
  END AS shortened_number
FROM your_table;

说明:

  • FLOOR(original_number / 1000):将数字除以1000后向下取整,确保得到整数部分(比如190000/1000=190,直接拼接K)
  • CAST(original_number AS CHAR):将小于1000的数字转为字符串,保持原格式

保留四舍五入的版本

如果需要对百位数字进行四舍五入(比如190500转为191K),可以把FLOOR()替换为ROUND():

SELECT 
  original_number,
  CASE
    WHEN original_number >= 1000 THEN CONCAT(ROUND(original_number / 1000), 'K')
    ELSE CAST(original_number AS CHAR)
  END AS shortened_number
FROM your_table;

测试示例

直接执行以下语句可以验证效果:

SELECT 
  100000 AS original_number,
  CONCAT(FLOOR(100000 / 1000), 'K') AS shortened_number
UNION ALL
SELECT 
  190000 AS original_number,
  CONCAT(FLOOR(190000 / 1000), 'K') AS shortened_number
UNION ALL
SELECT 
  190500 AS original_number,
  CONCAT(ROUND(190500 / 1000), 'K') AS shortened_number
UNION ALL
SELECT 
  500 AS original_number,
  CAST(500 AS CHAR) AS shortened_number;

执行结果:

original_numbershortened_number
100000100K
190000190K
190500191K
500500

扩展支持更大单位(如百万M)

如果需要同时处理百万级数字,可以扩展CASE WHEN的条件:

SELECT 
  original_number,
  CASE
    WHEN original_number >= 1000000 THEN CONCAT(FLOOR(original_number / 1000000), 'M')
    WHEN original_number >= 1000 THEN CONCAT(FLOOR(original_number / 1000), 'K')
    ELSE CAST(original_number AS CHAR)
  END AS shortened_number
FROM your_table;

内容的提问来源于stack exchange,提问作者abhinay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 03:52:33