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)

ここで、列AMとPMをSQLクエリの小数点以下3桁にフォーマットする必要があります-正解

千の値をx、xxx.xxxではなくxxxx.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 に答える