MySQL函数if elseif 1064

时间:2015-10-04 15:53:43

标签: mysql function if-statement

我试图使用MySQL,但是自从2天以来我一直坚持使用它。 我有1064错误,这意味着语法错误。我尝试了很多东西,但都没有用。

DELIMITER $$
CREATE FUNCTION set_libelle(civilite VARCHAR(4), prenom VARCHAR(30), nom VARCHAR(30)) 
RETURNS VARCHAR(20) 
    BEGIN
        IF (LEN(civilite)+LEN(prenom)+LEN(nom)<19) THEN
            RETURN civilite + ' ' + prenom + ' ' + nom;
        ELSEIF (LEN(civilite)+LEN(nom)<17) THEN 
            RETURN civilite + ' ' + LEFT(prenom,1) + '. ' + nom;
        ELSE 
            RETURN civilite + ' ' + LEFT(prenom,1) + '. ' + LEFT(nom, (17-(LEN(civilite)));
        END IF;
    END$$
DELIMITER ; 

你知道为什么这不起作用吗? 谢谢

1 个答案:

答案 0 :(得分:1)

您使用+进行字符串连接而不是concat()

正确的语法是:

DELIMITER //

CREATE FUNCTION set_libelle(civilite VARCHAR(4), prenom VARCHAR(30), nom VARCHAR(30)) 
RETURNS VARCHAR(20) 
    BEGIN
        IF (LEN(civilite) + LEN(prenom) + LEN(nom) < 19) THEN
            RETURN CONCAT_WS(' ', civilite,  prenom, ',', nom);
        ELSEIF (LEN(civilite) + LEN(nom) < 17) THEN 
            RETURN CONCAT_WS(' ', civilite, LEFT(prenom, 1), '.', nom);
        ELSE 
            RETURN CONCAT_WS(' ', civilite, LEFT(prenom, 1), '.', LEFT(nom, 17 - LEN(civilite)) );
        END IF;
    END; //
DELIMITER ; 

Here是一个SQL小提琴。