2013-06-01 24 views
0

我在MySQL下面的sql查詢返回2個小數位的結果。格式(x,d)不工作mysql函數

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$$ 
+1

'FORMAT'返回一個字符串。你有你的函數聲明返回一個浮點數。所以字符串正在被轉換爲一個浮點數。 – Barmar

回答

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$$ 
+0

非常感謝! –