mySQL格式编号输出,千位分隔符

时间:2012-09-11 11:05:14

标签: mysql format decimal

我有一个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正确格式化。

3 个答案:

答案 0 :(得分:9)

只需使用ROUND,这是一个数字函数。 FORMAT是一个字符串函数

ROUND(Fixes.GBPam, 3)

答案 1 :(得分:1)

您可以使用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 

答案 2 :(得分:0)

使用替换功能。无论字段是整数还是varchar,它都可以工作。

select replace(Fixes.GBPam,',','.');