我想在用户定义的函数内动态地创建一个变量名,但它似乎不起作用。有没有办法做到这一点或通过使用数组变量?MySQL构建变量名称?
我有一个由7个字符组成的字符串,代表了一周中的几天(1234567或1_3_5_7等)。我想要评估每天选择一周的频率(从0到7)。我想,这将是最容易使用的循环要经过所有的7个位置,但我得到一个错误信息说
[错误] 1193 - 未知的系统变量“CONCAT”
任何提示我如何才能做到这一点?这是我的代码:
DELIMITER $$
DROP FUNCTION IF EXISTS fn_freq$$
CREATE FUNCTION fn_freq(days INT) RETURNS INT
BEGIN
DECLARE D1 VARCHAR(1);
DECLARE D2 VARCHAR(1);
DECLARE D3 VARCHAR(1);
DECLARE D4 VARCHAR(1);
DECLARE D5 VARCHAR(1);
DECLARE D6 VARCHAR(1);
DECLARE D7 VARCHAR(1);
DECLARE x INT;
DECLARE fn_freq INT;
SET x =1;
SET fn_freq = 0;
WHILE x < 8 DO
SET CONCAT('D',x) = MID(days, x, 1);
IF CONCAT('D',x) = '_' THEN
ELSE
SET fn_freq = fn_freq + 1;
SET x = x + 1;
END IF;
SET x = x + 1;
END WHILE;
RETURN fn_freq;
END$$
DELIMITER ;