MySQL函数执行报错,跪求大神解答

流光溢辉 流光溢辉 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
执行如下语句时报错
SELECT fun_split_version('03.02')

报错信息如下:
错误代码: 1366
Incorrect decimal value: '' for column '' at row -1

很神奇的一点就是,在多个服务器上的数据库(数据库版本都是5.5.20)同样执行时,只有一个报错,特纠结

函数如下:

DELIMITER $$

USE `autelproweb`$$

DROP FUNCTION IF EXISTS `fun_split_version`$$

CREATE DEFINER=`root`@`%` FUNCTION `fun_split_version`(softVer VARCHAR(50)/*版本号*/) RETURNS DECIMAL(20,0)
BEGIN
DECLARE returnVer DECIMAL(20, 0);
DECLARE v_1 DECIMAL(5);
DECLARE v_2 DECIMAL(5);
DECLARE v_3 DECIMAL(5);
DECLARE wz1begin INT; DECLARE wz1 INT;DECLARE wz2 INT ;DECLARE wz3 INT;DECLARE wz4 INT;
DECLARE softVer2 VARCHAR(50);
SET wz1begin = INSTR(softVer,'v'); # 取V所在的字符 一般为1
SET wz1=INSTR(softVer,'.'); # 取第一个点所在的位置
SET wz2=LOCATE('.', softVer, wz1+1); # 取第二个点所在的位置
IF wz2<1 THEN
SET wz2=CHAR_LENGTH(softVer)+1; # 不存在最后一个点则取最后一位+1为最后一个点
END IF;

SET v_1=CONVERT(SUBSTRING(softVer,wz1begin+1,wz1-1-wz1begin), DECIMAL(5,0));
SET v_2=CONVERT(SUBSTRING(softVer,wz1+1,wz2-wz1-1), DECIMAL(5,0));
SET v_3=CONVERT(SUBSTRING(softVer,wz2+1,CHAR_LENGTH(softVer)-wz2), DECIMAL(5,0));
SET returnVer=v_1*10000000000+v_2*100000+v_3;
RETURN returnVer;
END$$

DELIMITER ;
...全文

相关推荐

评论 3
收藏 已收藏
分享
返回顶部
流光溢辉
MySQL 57,062 成员 56,759 内容