【mysql技巧】如何在存储过程(produce)中使用数组

在工作中难免会遇到需要使用一个数组的时候,但是mysql却没有数组这种类型,所以我们需要想个办法来处理它。下面是一个简单的演示:

CREATE procedure proc_update_use_arr(myID BIGINT(10))
BEGIN
	DECLARE arr VARCHAR(100);
        DECLARE arr_flag INT;
        DECLARE index_a INT;
	DECLARE num INT;

	SET arr  = '1,2,3,4,5'; 
	SET arr_flag = 1;
	SET index_a = 1 ;
	WHILE arr_flag <= 5 DO
		SET num = substring_index(substring_index(arr,',',index_a),',',-1);
		SET index_a = index_a + 1 ;
		SET arr_flag = arr_flag + 1;
		INSERT INTO b(id,num) VALUES(arr_flag,num);
	END WHILE;
    COMMIT;
END$$

上面的功能就是把一个数组arr中的五个数字分五条记录插入,其中我们使用一个长varchar类型 arr来保存数组,再使用分隔字符串的方法substring_index来分解字符串为数字。