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
小数点可能会有所不同,因此返回值应基于该小数点。有没有办法做到这一点。?提前谢谢。
1条答案
按热度按时间exdqitrt1#
首先,
FORMAT
返回字符串,因为它可以包含逗号(千位分隔符)。所以,你可以作为回报VARCHAR(99)
. 同样,你也可以输入字符串,除非你的数字是真的DOUBLE
.注意,从
DECIMAL(m,n)
至DOUBLE
,然后舍入(通过FORMAT
)d到小数点后的某个位数是做2次舍入,比你真正需要的多一次。另一个注意事项:在mysql的许多情况下(不是所有情况下),包含数字数据的字符串与
DOUBLE
或者DECIMAL
. (值得注意的例外是WHERE varchar_col = 1234
将无法使用INDEX(varchar_col)
.)