我需要将字符串数组作为参数传递给MySQL存储例程。该数组可能很长,其元素数量不是固定的。然后,我想将字符串值放入具有一列的内存表中,以便可以处理数据。我不知道这是否可以在MySQL中完成。也许需要肮脏的解决方法。
例如,我有字符串值:
Banana, Apple, Orange
现在,我想从MySQL Fruits表中获取有关这些水果的数据。伪代码:
Fruits
create function GetFruits(Array fruitArray) declare @temp table as fruitName varchar(100) end @temp = convert fruitArray to table select * from Fruits where Name in (select fruitName from @temp) end
Microsoft SQL Server允许您使用TEXT数据类型并将数组作为XML字符串提交,从而快速创建内存表。但是,我认为该技术不可能在MySQL中实现。
TEXT
任何有关如何执行此操作的帮助将不胜感激!
您可以在列表中传递字符串,并使用准备好的语句来运行查询,例如-
DELIMITER $$ CREATE PROCEDURE GetFruits(IN fruitArray VARCHAR(255)) BEGIN SET @sql = CONCAT('SELECT * FROM Fruits WHERE Name IN (', fruitArray, ')'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; END $$ DELIMITER ;
如何使用:
SET @fruitArray = '\'apple\',\'banana\''; CALL GetFruits(@fruitArray);