MySQL截断或四舍五入,小数长度可变
我无法在可变小数长度上截断(或四舍五入)小数。 下面是我的MySQL查询:MySQL截断或四舍五入,小数长度可变,mysql,variables,rounding,truncate,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.
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
Mytruncated_decimal
变量返回时不进行截断,即表中的默认十进制长度。与ROUND函数的行为相同。
变量decimal\u length
是一个整数,对于表中的不同行,它是不同的
有什么想法吗?使用Trim删除尾随零位
SELECT
TRIM(TRAILING '0' FROM TRUNCATE( `amount` , `decimal_length` ))
FROM table
使用Trim删除尾随零位
SELECT
TRIM(TRAILING '0' FROM TRUNCATE( `amount` , `decimal_length` ))
FROM table
你把截断函数和取整函数弄混了
这就是你要找的吗
你把截断函数和取整函数弄混了
这就是您要寻找的吗?因此获取可变长度小数的正确答案是使用格式函数:
SELECT
FORMAT( `amount` , `decimal_length` ) AS truncated_decimal,
FROM table
它确实与舍入有关,但至少需要可变长度小数,因此获取可变长度小数的正确答案是使用格式函数:
SELECT
FORMAT( `amount` , `decimal_length` ) AS truncated_decimal,
FROM table
它确实与舍入有关,但至少您会得到所需的可变长度小数您可以分享您传递的示例值、您得到的结果以及您试图得到的这些值的结果吗?当我在第二个表中有长度并加入时。。添加示例数据似乎很有效。xQbert我无法打开您的sqlfiddle链接,无法加载数据。您可以分享您传递的示例值、您得到的结果以及您试图得到的这些值的结果吗?当我在第二个表中有长度并连接时。。添加示例数据后,它似乎可以工作。xQbert我无法打开您的sqlfiddle链接,无法加载数据。我没有混合-我想截断或舍入到可变小数长度。我没有混合-我想截断或舍入到可变小数长度。它的结尾不总是“0”。我需要可变长度的修剪。结尾不总是“0”。我需要可变长度的修剪。