0

我已经按照 sql 查询MySQL返回了 2 位小数的结果。

FORMAT(((sold_amt - purchased_amt) * 5 / 100 * sold_qty), 2)

在存储过程中使用时它工作正常。但是当它用于 时MySQL Function,它并没有给出预期的结果。相反,它给出了所有的十进制值。FORMAT(x, d)工作吗MySQL Function

我的 MySQL 函数的完整代码是:

CREATE DEFINER=`root`@`localhost` 
FUNCTION `get_capital_gain`(purchased_amt FLOAT, sold_amt FLOAT, sold_qty INT(5)) 
RETURNS FLOAT
BEGIN
    IF sold_amt > purchased_amt THEN
        RETURN FORMAT(((sold_amt - purchased_amt) * 5 / 100 * sold_qty), 2);
    ELSE 
        RETURN 0.00;
    END IF; 
END$$
4

1 回答 1

2

尝试这个。它返回一个字符串而不是浮点数,因此格式将被保留。

CREATE DEFINER=`root`@`localhost` 
FUNCTION `get_capital_gain`(purchased_amt FLOAT, sold_amt FLOAT, sold_qty INT(5)) 
RETURNS VARCHAR(20)
BEGIN
    IF sold_amt > purchased_amt THEN
        RETURN FORMAT(((sold_amt - purchased_amt) * 5 / 100 * sold_qty), 2);
    ELSE 
        RETURN '0.00';
    END IF; 
END$$
于 2013-06-01T05:56:06.707 回答