我正在尝试编写一个MySQL函数,它从两个值(a,b)返回非null值。但是,我收到错误
DELIMITER $$
CREATE FUNCTION GetNonNull(a,b) BEGIN
IF a = NULL THEN RETURN b; ELSE return a; ENDIF; END $$
DELIMITER ;
我收到此错误:
错误1064(42000):您的SQL语法有错误;检查 手册,对应右边的MySQL服务器版本 在'b)BEGIN附近使用的语法 如果a = NULL那么返回b; ELSE返回;万一;结束'第1行
任何帮助将不胜感激!
答案 0 :(得分:0)
您缺少显示函数返回的数据类型的RETURNS
子句。您还必须指定参数的数据类型。查看the documentation
答案 1 :(得分:0)
我建议使用内置的COALESCE
功能,而不是编写自己的功能。
答案 2 :(得分:0)
试试这个
DELIMITER $$
CREATE FUNCTION GetNonNull(a INT,b INT) RETURNS INT
BEGIN
IF a IS NULL THEN
RETURN b;
ELSE
return a;
ENDIF;
END $$
DELIMITER ;
或
DELIMITER $$
CREATE FUNCTION GetNonNull(a INT,b INT) RETURNS INT
BEGIN
IF ISNULL(a) THEN
RETURN b;
ELSE
return a;
ENDIF;
END $$
DELIMITER ;
或
DELIMITER $$
CREATE FUNCTION GetNonNull(a INT ,b INT) RETURNS INT
BEGIN
RETURN IFNULL(a,b);
END $$
DELIMITER ;
事实上,您只需将存储过程替换为IFNULL(a,b)