我试图使用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 ;
你知道为什么这不起作用吗?谢谢你
您正在使用+
而不是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 ;