繁体   English   中英

MySQL TRUNCATE或ROUND具有可变的十进制长度

[英]MySQL TRUNCATE or ROUND with variable decimal length

我无法截断(或舍入) 小数lengh变量的小数 这是我的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是一个整数,该整数对于表中的不同行是不同的。

有任何想法吗?

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

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

它确实与舍入一起使用,但是至少您需要使用可变长度的小数

使用修剪删除尾随零

SELECT 
TRIM(TRAILING '0' FROM TRUNCATE( `amount` , `decimal_length` ))
FROM table
-- 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

您将截断函数与舍入函数混合在一起

这是你想要的?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM