1

我正在尝试编写一个 MySQL 函数,该函数从两个值( a,b )返回非空值 ..但是,我得到一个错误

DELIMITER $$ 
CREATE FUNCTION GetNonNull(a,b) BEGIN
IF a = NULL THEN RETURN b; ELSE return a; ENDIF; END $$ 
DELIMITER ;

我收到此错误:

ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 'b) BEGIN IF a = NULL THEN RETURN b; 附近使用的正确语法;否则返回一个;万一; END' 在第 1 行

任何帮助将不胜感激 !

4

3 回答 3

0

您缺少RETURNS显示函数返回的数据类型的子句。您还必须指定参数的数据类型。查看文档

于 2012-04-18T18:54:43.240 回答
0

我建议使用内置COALESCE函数而不是编写自己的函数。

于 2012-04-18T18:57:35.290 回答
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)

于 2012-04-18T19:01:54.893 回答