gpt4 book ai didi

MySQL 函数 if elseif 1064

转载 作者:行者123 更新时间:2023-11-28 23:49:06 25 4
gpt4 key购买 nike

我正在尝试使用 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 ;

Here是一个 SQL fiddle 。

关于MySQL 函数 if elseif 1064,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32935368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com