函数代码在mysql 5.7.21中遇到1064错误

时间:2018-04-12 17:32:48

标签: mysql

DELIMITER //
CREATE FUNCTION `nvl`(`expr1` text,`expr2` text) RETURNS text CHARSET utf8
BEGIN
     RETURN case when expr1 = '' or expr1 is NULL then expr2 ELSE expr1 end case
END ;
//
DELIMITER ;

仍然,报道:

  

错误1064(42000):您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'case附近使用正确的语法   结束'第3行'

为什么呢?我想不出来......

2 个答案:

答案 0 :(得分:1)

当您说end case时,您正在使用case statement的语法。 你想要的是一个case expression,它只用end终止。

答案 1 :(得分:0)

删除多余的"案例"最后。

DELIMITER //
CREATE FUNCTION `nvl`(`expr1` text,`expr2` text) RETURNS text CHARSET utf8
BEGIN
     RETURN case when expr1 = '' or expr1 is NULL then expr2 ELSE expr1 end;
END ;
//
DELIMITER ;