Dav*_*ide 6 mysql arrays stored-procedures while-loop
我想创建一个存储过程或普通查询,其值与数组一起传递.
例:
CREATE PROCEDURE proc()
BEGIN
DECLARE cont INTEGER;
DECLARE var ARRAY;
SET cont = 0;
SET var = ("hi", "hello", "good", ...)
WHILE cont < 12 DO
SELECT * FROM tablex
WHERE name = var[cont];
SET cont = cont + 1;
END WHILE;
END;
Run Code Online (Sandbox Code Playgroud)
显然这是行不通的,但我想知道如何实现这一目标.
Dev*_*art 10
尝试没有存储的例行程序 -
SET @arr = 'hi,hello,good'; -- your array
SELECT COUNT(*) FROM tablex
WHERE FIND_IN_SET (name, @arr); -- calculate count
Run Code Online (Sandbox Code Playgroud)
现有的答案都不适合我,因此我最终实现了自己的MySQL过程。
PROCEDURE db.loop_through_array()
BEGIN
DECLARE var varchar(150) DEFAULT 'hi,hello,good';
DECLARE element varchar(150);
WHILE var != '' DO
SET element = SUBSTRING_INDEX(var, ',', 1);
SELECT * FROM tablex WHERE name = element;
IF LOCATE(',', var) > 0 THEN
SET var = SUBSTRING(var, LOCATE(',', var) + 1);
ELSE
SET var = '';
END IF;
END WHILE;
END
Run Code Online (Sandbox Code Playgroud)