【发布时间】:2019-02-07 11:15:17
【问题描述】:
我正在构建一个存储函数以从浮点数中返回有效数字。例如 sfround(4.867,2) 将返回 4.8,sfround(1345,2) 将返回 1300
示例代码是
delimiter //
CREATE FUNCTION sfround(n FLOAT, sf INT) RETURNS FLOAT DETERMINISTIC
BEGIN
CASE n
WHEN 0 THEN RETURN 0;
ELSE
BEGIN
RETURN ROUND(n ,sf-FLOOR(LOG10(ABS(n ))))
END;
END CASE;
END//
delimiter ;
(我知道缩进会导致mysql出现问题)
我抛出一个错误
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END;
END CASE;
END' at line 8
这是我第一次写这样的野兽,不知道从哪里开始..
【问题讨论】:
-
出现语法错误的原因是您在
RETURN ROUND(n ,sf-FLOOR(LOG10(ABS(n ))))末尾缺少; -
谢谢 :)