mySQL的格式号输出,千位分隔(mySQL format number output , thou

2019-09-22 07:55发布

我有一个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查询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

你可以看到,输出黄金AM是1,081.334? 我怎样才能得到它的输出1081.334?

这是屁股对我来说是痛苦,因为我有那么PHP渣土要删除逗号。 我宁愿只是让MySQL正确格式化。

Answer 1:

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

ROUND(Fixes.GBPam, 3)


Answer 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 


Answer 3:

使用替换功能。 无论字段是整数或VARCHAR,它会工作。

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


文章来源: mySQL format number output , thousands separator