You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建调用MySQL生成前n项斐波那契数函数及前导零缺失问题咨询

核心问题

你定义的函数返回类型为INT数值类型,MySQL会自动截断数值类型的前导零,这是前导0丢失的根本原因。同时分支中num=1时返回的是INT类型的0,类型不统一也会引发隐性转换问题。

解决步骤
  • 修改函数返回值类型为VARCHAR(255),匹配你拼接好的字符串结果类型
  • 统一所有分支的返回值为字符串类型,避免隐性类型转换
修改后的完整代码
DELIMITER $$
CREATE FUNCTION fibonacci(num INT)
RETURNS VARCHAR(255)
DETERMINISTIC
BEGIN
    DECLARE fib1 INT DEFAULT 0;
    DECLARE fib2 INT DEFAULT 1;
    DECLARE fib3 INT DEFAULT 0;
    DECLARE str VARCHAR(255) DEFAULT '01';
    
    IF num = 1 THEN
        RETURN '0';
    ELSEIF num = 2 THEN
        RETURN '01';
    ELSE
        WHILE num > 2 DO
            SET fib3 = fib1 + fib2;
            SET fib1 = fib2;
            SET fib2 = fib3;
            SET num = num - 1;
            SET str = CONCAT(str, fib3);
        END WHILE;
        RETURN str;
    END IF;
END $$
DELIMITER ;
验证效果

执行调用语句SELECT fibonacci(6);,即可得到正确结果011235,前导零正常保留。

内容的提问来源于stack exchange,提问作者Albert Einstein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 18:09:03