如何在MySQL中使用数组循环?

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)


Tra*_*oud 6

现有的答案都不适合我,因此我最终实现了自己的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)