MySQL查询结果数字格式转换求助:26,613,080转266,130/266.130
搞定MySQL数字格式转换问题
嘿,我来帮你解决这个困扰你的数字转换问题!你需要把查询到的26,613,080转成266,130或者266.130,核心问题其实是先处理带逗号的字符串,再做数值调整和格式化,之前没成功可能是没先清理掉逗号就直接操作了。
核心思路
不管用哪种方法,第一步都得把带逗号的字符串转成纯数字,要么去掉逗号转数值,要么直接处理字符串截断最后两位,再用number_format设置你想要的分隔符。
具体实现方法
方法一:先转数值再格式化(推荐)
如果你的查询结果是带逗号的字符串(比如字段叫original_num),可以这么写:
得到266,130(逗号做千分分隔符)
SELECT number_format(CAST(REPLACE(original_num, ',', '') AS UNSIGNED) / 100, 0, '.', ',') AS formatted_num;
我给你拆解下:
REPLACE(original_num, ',', ''):把字符串里的逗号全删掉,得到纯数字串26613080CAST(...) AS UNSIGNED:把纯数字串转成无符号整数/100:除以100后得到266130.8,number_format的第二个参数0会自动帮你取整成266130- 最后用逗号作为千分分隔符,输出就是
266,130
得到266.130(点做千分分隔符)
要是想用点当分隔符,只要调整number_format的参数就行:
SELECT number_format(CAST(REPLACE(original_num, ',', '') AS UNSIGNED) / 100, 0, ',', '.') AS formatted_num;
这里把小数分隔符设为逗号,千分分隔符设为点,输出就变成266.130啦。
方法二:直接截断最后两位(字符串处理方式)
如果你不想用除法,想直接删掉最后两位数字,也可以这么玩:
SELECT number_format(LEFT(REPLACE(original_num, ',', ''), LENGTH(REPLACE(original_num, ',', '')) - 2), 0, '.', ',') AS formatted_num;
原理很简单:先把字符串转成26613080,然后截取除最后两位外的部分得到266130,再格式化加千分分隔符。
要是原数本身是数值类型(不带逗号)
如果你的查询结果本来就是纯数字26613080,那更简单,直接算:
-- 输出266,130 SELECT number_format(original_num / 100, 0, '.', ',') AS formatted_num; -- 输出266.130 SELECT number_format(original_num / 100, 0, ',', '.') AS formatted_num;
这样应该就能得到你想要的结果啦!
内容的提问来源于stack exchange,提问作者Steven
相关产品推荐
相关产品推荐

