2016-05-31 27 views
0

我無法在可變十進制長度上截斷(或舍入)小數。 這裏是我的MySQL查詢: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變量而沒有截斷返回,從表即默認小數長度。與ROUND函數相同的行爲。 變量decimal_length是表中不同行的整數。

任何想法?

+1

您可以分享您傳遞的示例值,您獲得的結果以及您試圖獲得這些值的結果嗎? – Mureinik

+0

當我在第二個表中的長度和加入..它似乎工作[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

我不混合 - 我想截斷或舍入爲可變的小數長度。 – Paktas