MySQL函数返回非null

时间:2012-04-18 18:49:08

标签: mysql function null

我正在尝试编写一个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行

任何帮助将不胜感激!

3 个答案:

答案 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)

即可