我无法理解在用户定义的函数中导致语法错误的原因。
这有效:
CREATE FUNCTION func(x INT)
RETURNS INT DETERMINISTIC
RETURN x + 1
SELECT func(10)
选择11
。
但是,以下失败(在创建时):
CREATE FUNCTION func(x INT)
RETURNS INT DETERMINISTIC
RETURN MAX(x, 1)
它在第3行抱怨1)
(错误1064)。
我看到分隔符可以破坏用户定义函数的内容,但我根本就没有使用它们。更重要的是,the example in the docs(使用CONCAT
,也使用逗号)工作得很好。
失败的函数语法出了什么问题?
答案 0 :(得分:3)
用于确定其最大参数的函数称为GREATEST()
- 而不是MAX()
。后者是一个group-by函数,我经常错误地使用它...
简而言之:GREATEST()
用于确定其参数列表中的最大值,而MAX()
用于从结果集中查找最大(列)值。