在mysql自定义函数中如何设置动态返回数据类型

o2gm4chl  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(552)

mysql自定义函数中如何根据函数执行情况设置动态返回数据类型。

DELIMITER $$
CREATE FUNCTION financeNumberFormat(number double) RETURNS DECIMAL(10,5)
    DETERMINISTIC
BEGIN
    DECLARE decpoint int(10);

    SELECT c_maximum_decimal_values INTO decpoint
    FROM mst_xxx
    WHERE 1 LIMIT 1;    

    SET decpoint = FORMAT(number,decpoint); 

 RETURN (decpoint);
END

我的输出如下。

financeNumberFormat(5.345)  
5.000

小数点可能会有所不同,因此返回值应基于该小数点。有没有办法做到这一点。?提前谢谢。

exdqitrt

exdqitrt1#

首先, FORMAT 返回字符串,因为它可以包含逗号(千位分隔符)。所以,你可以作为回报 VARCHAR(99) . 同样,你也可以输入字符串,除非你的数字是真的 DOUBLE .
注意,从 DECIMAL(m,n)DOUBLE ,然后舍入(通过 FORMAT )d到小数点后的某个位数是做2次舍入,比你真正需要的多一次。
另一个注意事项:在mysql的许多情况下(不是所有情况下),包含数字数据的字符串与 DOUBLE 或者 DECIMAL . (值得注意的例外是 WHERE varchar_col = 1234 将无法使用 INDEX(varchar_col) .)

相关问题