2016-05-31 5 views
0
の場合

の小数点以下を小数点以下を切り捨て(丸め)できません。です。MySQLのTRUNCATEまたはROUND変数の小数点以下の桁数が

SELECT 
TRUNCATE(`amount` , `decimal_length`) AS truncated_decimal, 
FROM table 

-- sample data 
amount decimal length 
123.123 0 
456.456 1 
789.789 2 

--expected outcome 
truncated_decimal 
123 
456.4 
789.78 

--current outcome (wrong) 
truncated_decimal 
123.123 
456.456 
789.789 

マイtruncated_decimal変数が切り捨てなしで返され、テーブルからすなわちデフォルトの小数点以下の長さ: はここに私のMySQLのクエリです。 ROUND関数でも同じ動作です。 変数decimal_lengthは、テーブルの異なる行で異なる整数です。

アイデア?

+1

あなたが渡している値の例、あなたが得た結果、それらの値を取得しようとしている結果を共有できますか? – Mureinik

+0

私は2番目のテーブルの長さを持って参加する.. [SQLフィドル](http://sqlfiddle.com/#!9/ca57d2/1/0) – xQbert

+0

サンプルデータを追加しました。 – Paktas

答えて

1

だから、可変長小数を取得するための正しい答えは、FORMAT機能を使用することです:それは丸めて行くんが、少なくとも、あなたが必要な可変長を小数取得

SELECT 
FORMAT(`amount` , `decimal_length`) AS truncated_decimal, 
FROM table 

を。

0

利用トリムは、末尾削除するゼロの

SELECT 
TRIM(TRAILING '0' FROM TRUNCATE(`amount` , `decimal_length`)) 
FROM table 
+0

最後に必ずしも「0」とは限りません。そして私はトリミングの可変長が必要です。 – Paktas

0
-- Example with a field name 
SELECT 
ROUND(`field_name` , 2) AS truncated_decimal 
FROM table 

-- Example with just a number 
SELECT 
ROUND('285,1234' , 2) AS truncated_decimal 

==> 285,12 

あなたは、これはあなたが探しているものですラウンド機能

で切り捨て機能をミックス?

+0

私はミキシングしていません - 切り捨てたい、または可変長の10進数に丸めたいです。 – Paktas

関連する問題