MySQL TRUNCATE或ROUND,可变小数长度

时间:2016-05-31 18:32:28

标签: mysql variables rounding truncate

我无法在变量小数长度上截断(或舍入)小数。 这是我的MySQL查询:

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是一个整数,对于表中的不同行是不同的。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

因此获得可变长度小数的正确答案是使用 FORMAT 函数:

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

确实采用舍入,但至少需要可变长度小数

答案 1 :(得分:0)

使用修剪删除尾随零的

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

答案 2 :(得分: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

将truncate函数与round函数混合

这是你在找什么?