【发布时间】:2012-11-25 13:08:55
【问题描述】:
我正在尝试创建一个 MySQL 函数 IS_IN_ENUM('value', 'val1', 'val2', 'val3'),如果 'value' 在 ('val1', 'val2', 'val3') 中则返回 true。我知道我可以做到SELECT 'value' IN ('val1', 'val2', 'val3'),但这没那么有趣,因为我只想学习如何创建这样的函数。
我举个例子,考虑下面的ADD函数:
CREATE FUNCTION my_add (
a DOUBLE,
b DOUBLE
)
RETURNS DOUBLE
BEGIN
IF a IS NULL THEN
SET a = 0;
END IF;
IF b IS NULL THEN
SET b = 0;
END IF;
RETURN (a + b);
END;
如果我选择SELECT my_add(1, 1),我会得到 2(哇!)。
如何改进此功能以使其能够调用:
SELECT my_add(1, 1); -- 2
SELECT my_add(1, 1, 1); -- 3
SELECT my_add(1, 1, 1, 1); -- 4
SELECT my_add(1, 1, 1, 1, 1, 1, .....); -- n
【问题讨论】:
-
一个问题,你不能在一个参数中传递多个参数吗?
MYFUNCT(('1','2','3'))? -
您可以传递一个 SET,例如
MYFUNCT("1,2,3"),然后使用 SET-ready 函数。但这并不友好。
标签: mysql arguments user-defined-functions variadic-functions