Kru*_*nal 22 mysql arguments function
我想在MySQL中创建一个带有可选参数的函数.例如,我想创建计算其参数平均值的函数.我创建了一个五个参数的函数,但是当用户只向函数传递两个参数时,它仍然应该运行并返回两个参数的平均值.
您不能在MySQL存储过程中设置可选参数。
但是,您可以在MySQL UDF中设置可选参数。
您知道MySQL具有AVG聚合功能吗?
解决方法 如果您可能会遇到此解决方法的丑陋之处,那么这里的示例代码将使用逗号分隔的字符串作为输入值,并返回平均值。
DELIMITER $$
CREATE FUNCTION MyAvg(valuestr varchar) RETURNS float
BEGIN
DECLARE output float;
DECLARE arg_count integer;
DECLARE str_length integer;
DECLARE arg float;
DECLARE i integer;
SET output = NULL;
SET i = LENGTH(valuestr);
IF i > 0 THEN BEGIN
SET arg_count = 1;
WHILE i > 0 DO BEGIN
IF MID(valuestr, i, 1)
SET i = i - 1;
END; END WHILE;
/* calculate average */
SET output = 0;
SET i = arg_count;
WHILE i > 0 DO BEGIN
SET arg = SUBSTRING_INDEX(
SUBSTRING_INDEX(valuestr, ',' , i)
, ',', -1 );
SET output = output + arg;
SET i = i - 1;
END; END WHILE;
SET output = output / arg_count;
END; END IF;
RETURN output;
END $$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
使用concat_ws来提供函数。
SELECT MyAvg(CONCAT_WS(',',100,200,300,500)) AS test;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34177 次 |
| 最近记录: |