我做了这个简单的函数,结果返回1而不是0.5
我做错了什么?
DELIMITER //
DROP FUNCTION IF EXISTS test_decimal //
CREATE FUNCTION test_decimal(input DECIMAL)
RETURNS DECIMAL
BEGIN
SET @_credit = 0.5;
RETURN input * @_credit;
END //
DELIMITER ;
SELECT test_decimal(1);
Run Code Online (Sandbox Code Playgroud)
因为你没有指定precision,scale这就是为什么它将值四舍五入.精度表示为值存储的有效位数,刻度表示小数点后可存储的位数.默认情况下,precision 10的值为scale,而scale的值为0.所以,RETURNS DECIMAL是一样的RETURNS DECIMAL(10,0).如果比例为0,则DECIMAL值不包含小数点或小数部分.尝试指定您的功能.
RETURNS DECIMAL(5,2) -- 999.99
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
616 次 |
| 最近记录: |