首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql自定义函数中如何设置动态返回数据类型

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

Stack Overflow用户
提问于 2019-01-08 20:33:13
回答 1查看 147关注 0票数 1

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

代码语言:javascript
复制
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

我的输出如下。

代码语言:javascript
复制
financeNumberFormat(5.345)  
5.000

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

EN

回答 1

Stack Overflow用户

发布于 2019-01-09 03:00:15

首先,FORMAT返回一个字符串,因为它可以包含逗号(千位分隔符)。所以,你可以返回VARCHAR(99)。出于同样的原因,您也可以输入字符串,除非您的数字是真正的DOUBLE

请注意,从DECIMAL(m,n)DOUBLE,然后(通过FORMAT)将d舍入到某个小数位数将执行两次舍入,这比您实际需要的次数多了一次。

另请注意:在许多情况下,在MySQL (并非全部)中,包含数字数据的字符串与DOUBLEDECIMAL一样好。(值得注意的例外是WHERE varchar_col = 1234不能使用INDEX(varchar_col)。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54091905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档