gpt4 book ai didi

mysql - 在 MySQL 中创建一个带有可选参数的函数

转载 作者:IT老高 更新时间:2023-10-28 23:50:03 26 4
gpt4 key购买 nike

我想在 MySQL 中创建一个带有可选参数的函数。例如,我想创建一个函数来计算其参数的平均值。我创建了一个有五个参数的函数,但是当用户只将两个参数传递给该函数时,它仍然应该运行并返回两个参数的平均值。

最佳答案

不能在MySQL存储过程中设置可选参数。
但是,您可以在 MySQL UDF 中设置可选参数。

你知道 MySQL 有一个 AVG aggregate function ?

解决方法如果您可以面对此解决方法的丑陋之处,请查看示例代码,它使用以逗号分隔的字符串作为输入值并返回平均值。

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 ;

使用 concat_ws 来提供函数。

SELECT MyAvg(CONCAT_WS(',',100,200,300,500)) AS test;

您也可以write an UDFC(++)Delphi/Lazarus

关于mysql - 在 MySQL 中创建一个带有可选参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4885675/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com