作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我想在 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 UDF在 C(++)或 Delphi/Lazarus
关于mysql - 在 MySQL 中创建一个带有可选参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4885675/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!