mySQL格式数字输出,千位分隔符
Posted
技术标签:
【中文标题】mySQL格式数字输出,千位分隔符【英文标题】:mySQL format number output , thousands separator 【发布时间】:2012-09-11 11:05:14 【问题描述】:我有一个 mysql 查询,它输出带逗号的十进制字段。
SELECT Metals.Metal, FORMAT(Fixes.GBPam, 3) AS AM, FORMAT(Fixes.GBPpm, 3) AS PM,
DATE_FORMAT(Fixes.DateTime, '%d-%m-%y') AS Date
FROM Fixes, Metals
WHERE Metals.Id = Fixes.Metals_Id
字段 GBPam 和 GBPpm 都是 decimal(10,5)
类型
现在我希望在我的 sql 查询中将 AM 和 PM 列格式化为小数点后 3 位 - 正确
我希望将成千上万的值格式化为 xxxx.xxx 而不是 x,xxx.xxx - 不正确
mysql 查询的示例输出:
Metal AM PM Date
Gold 1,081.334 NULL 11-09-12
Silver 21.009 NULL 10-09-12
Platinum 995.650 NULL 11-09-12
Palladium 416.700 NULL 11-09-12
你能看到 Gold AM 的输出是 1,081.334 吗?如何让它输出 1081.334?
这对我来说很痛苦,因为我必须在 php 中搞砸以删除逗号。我宁愿让 mysql 正确格式化它。
【问题讨论】:
【参考方案1】:只需使用ROUND
,这是一个数值函数。 FORMAT
是一个字符串函数
ROUND(Fixes.GBPam, 3)
【讨论】:
如果原始数字没有小数,则四舍五入不添加小数【参考方案2】:您可以为此使用replace
命令。
REPLACE(Fixes.GBPam,',','')
编辑: 关于您的问题,您可以这样做:
SELECT Metals.Metal, ROUND(REPLACE(Fixes.GBPam,',',''),3) AS AM,
ROUND(REPLACE(Fixes.GBPpm,',',''),3) AS PM,
DATE_FORMAT(Fixes.DateTime, '%d-%m-%y') AS Date
FROM Fixes, Metals
WHERE Metals.Id = Fixes.Metals_Id
【讨论】:
ROUND 是否四舍五入?例如round 对 1024.7854 有何影响?我会取回 1024.785 还是 1024.76? 四舍五入到编号。指定的小数位数。在这里查看dev.mysql.com/doc/refman/5.0/en/…【参考方案3】:使用替换功能。无论字段是整数还是varchar,都可以。
select replace(Fixes.GBPam,',','.');
【讨论】:
以上是关于mySQL格式数字输出,千位分隔符的主要内容,如果未能解决你的问题,请参考以下文章