Mysql存储函数返回错误的值
Mysql存储函数返回错误的值,mysql,decimal,stored-functions,Mysql,Decimal,Stored Functions,选择cleanAmount('3.456')返回3,00。它应该是3,46默认的小数点可能是四舍五入的数字 DECLARE res DECIMAL(30,2)默认小数点可能是四舍五入数字 DECLARE res DECIMAL(30,2)更改存储过程中res的声明:- CREATE FUNCTION cleanAmount(amount DECIMAL) RETURNS decimal(30,2) LANGUAGE SQL DETERMINISTIC NO SQL
选择cleanAmount('3.456')代码>返回3,00。它应该是3,46默认的小数点可能是四舍五入的数字
DECLARE res DECIMAL(30,2)默认小数点可能是四舍五入数字
DECLARE res DECIMAL(30,2)更改存储过程中res的声明:-
CREATE FUNCTION cleanAmount(amount DECIMAL)
RETURNS decimal(30,2)
LANGUAGE SQL
DETERMINISTIC
NO SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE res DECIMAL;
SET res=CAST(COALESCE(amount,0.00) AS DECIMAL(30,2));
RETURN res;
END
更改存储过程中res的声明:-
CREATE FUNCTION cleanAmount(amount DECIMAL)
RETURNS decimal(30,2)
LANGUAGE SQL
DETERMINISTIC
NO SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE res DECIMAL;
SET res=CAST(COALESCE(amount,0.00) AS DECIMAL(30,2));
RETURN res;
END
尝试ROUND
而不是CAST
?例如:ROUND(3.456,2)
SET res=ROUND(amount,2)代码>返回3,00<代码>选择强制转换(合并(3.456,0.00)为十进制(30,2))
返回3.46:sEven更改该行以设置res=金额;返回3.00TryROUND
而不是CAST
?例如:ROUND(3.456,2)
SET res=ROUND(amount,2)代码>返回3,00<代码>选择强制转换(合并(3.456,0.00)为十进制(30,2))返回3.46:sEven更改该行以设置res=金额;返回3.00I已尝试但未更改<代码>声明十进制(30,2)代码>尝试更改输入参数declare(我在测试时也更改了它)。我现在编辑了我的答案以显示这一点。我已经尝试过,但没有改变<代码>声明十进制(30,2)代码>尝试更改输入参数declare(我在测试时也更改了它)。我现在编辑了我的答案以显示这一点。