如何在MySQL(MariaDB)函数中使用CASE语句?
解决MySQL/MariaDB存储函数中CASE语句的语法错误
错误原因
你遇到的1064语法错误,核心问题是RETURN语句后无需用SELECT包裹CASE表达式。CASE本身是一个能返回单个值的表达式,直接返回它即可,不需要额外的SELECT查询语句。
修正后的代码
CREATE FUNCTION CODE_TO_STR(CODE CHAR(4)) RETURNS VARCHAR(50) BEGIN RETURN CASE CODE WHEN '1' THEN 'Code is one' WHEN '2' THEN 'Code is two' ELSE CODE END; END;
额外注意事项
如果你的数据库环境启用了严格的语句分隔符规则,需要先修改分隔符再创建函数,示例如下:
DELIMITER // CREATE FUNCTION CODE_TO_STR(CODE CHAR(4)) RETURNS VARCHAR(50) BEGIN RETURN CASE CODE WHEN '1' THEN 'Code is one' WHEN '2' THEN 'Code is two' ELSE CODE END; END // DELIMITER ;
原错误信息翻译
错误代码: 1064. SQL语法有误;请查看与你的MariaDB服务器版本对应的手册,了解在第3行附近
SELECT CASE CODE WHEN '1' THEN 'Code is one' WHEN '2' THEN 'Code is two...'处使用的正确语法 0.000 秒
内容的提问来源于stack exchange,提问作者theking2
相关产品推荐
相关产品推荐

