MySQL函数执行报错,跪求大神解答
执行如下语句时报错
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 ;
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 ;
...全文
相关推荐
java,html,jquery,js各种报错解决方案
jquery"文件可能包含jQuery的错误处理技巧和最佳实践,如使用$(document).ready()确保DOM加载完成后再执行脚本,避免未定义的函数或变量引用等。4.
2018_BAT的55道sql面试题
以下是一些常见问题的详细解答:1. **ID自增主键**:在MySQL中,如果删除了记录,然后重启数据库并插入新记录,自增ID会继续递增,不会重用已删除的ID。因此,新插入的记录ID将是18。2.
PHP初学者常见问题集合 修正版(21问答)
** 使用`unlink()`函数,但确保程序有权限执行,例如:`unlink('filename');`。9. **为何调用类方法报错?
一份超级全面的PHP面试题
$_SERVER['SERVER_ADDR']; ```15、include和require的区别: - `include`:如果文件未找到,程序会继续执行,报错。
使用Mysql5.x以上版本出现报错#1929 Incorrect datetime value: ”” for column ”createtime”的快速解决方法
最后,当遇到类似问题时,除了参考官方文档和社区论坛,还可以查阅相关教程和文章,如“浅谈mysql密码遗忘和登陆报错的问题”、“线上MYSQL同步报错故障处理方法总结”、“mysql报错1033 Incorrect


