MySQL 可变十进制长度的 TRUNCATE 或 ROUND
MySQL TRUNCATE or ROUND with variable decimal length
我无法在 可变十进制长度 上截断(或舍入)小数。
这是我的 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
变量返回时没有截断,即来自 table 的默认十进制长度。与 ROUND 函数的行为相同。
变量 decimal_length
是一个整数,对于 table 中的不同行是不同的。
有什么想法吗?
使用Trim删除尾随零
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
您混淆了截断函数和舍入函数
这是您要找的吗?
因此获得可变长度小数的正确答案是使用 FORMAT 函数:
SELECT
FORMAT( `amount` , `decimal_length` ) AS truncated_decimal,
FROM table
它确实与四舍五入有关,但至少你需要可变长度小数。
我无法在 可变十进制长度 上截断(或舍入)小数。 这是我的 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
变量返回时没有截断,即来自 table 的默认十进制长度。与 ROUND 函数的行为相同。
变量 decimal_length
是一个整数,对于 table 中的不同行是不同的。
有什么想法吗?
使用Trim删除尾随零
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
您混淆了截断函数和舍入函数
这是您要找的吗?
因此获得可变长度小数的正确答案是使用 FORMAT 函数:
SELECT
FORMAT( `amount` , `decimal_length` ) AS truncated_decimal,
FROM table
它确实与四舍五入有关,但至少你需要可变长度小数。