我遇到了一个问题,在使用 ROUND()
在一个 CONCAT()
功能。
我简化并复制了这个问题
示例数据库创建和数据输入代码(来自sqlfiddle):
CREATE TABLE `test` ( `Amount` DECIMAL(10,5) NOT NULL , `Decimals` SMALLINT(6) NOT NULL ) ENGINE = InnoDB;
INSERT INTO test (Amount, Decimals) VALUES
(100.12345, 1),
(100.12345, 2),
(100.12345, 3);
查询以再现问题:
SELECT CONCAT(ROUND(`Amount`, Decimals), ' ') FROM test
所有行都以5位小数位输出。
此查询生成正确的结果:
SELECT ROUND(`Amount`, Decimals) FROM test
我想我发现了窃听器?如果是这样的话,在此期间,我是否可以使用其他可以正常工作的解决方法?在我的实际例子中,我需要将四舍五入到指定小数的 Jmeter 读数与单位文本(例如小时、英里)连接起来。我对该部分的实际sql如下所示:
CONCAT(ROUND(`MeterInstances`.`Reading`, `Meters`.`DecimalPlaces`), ' ', `Meters`.`Units`)
1条答案
按热度按时间9gm1akwq1#
我不认为这是一个真正的错误。concat只返回变量小数部分的长度
Amount
,也就是5(变量为10,5)。您可以使用substring函数来删除不必要的小数部分,如下所示: