2

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

4

3 回答 3

11

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

ROUND(Fixes.GBPam, 3)
于 2012-09-11T11:10:51.293 回答
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 
于 2012-09-11T11:11:50.967 回答
0

使用替换功能。无论该字段是整数还是 varchar,它都会起作用。

select replace(Fixes.GBPam,',','.');
于 2012-09-11T11:22:03.007 回答