gpt4 book ai didi

mysql - 将数组传递给MySQL存储例程

转载 作者:行者123 更新时间:2023-11-29 16:03:53 25 4
gpt4 key购买 nike

我需要将字符串数组作为参数传递给MySQL存储例程。该数组可能很长,其元素数量不是固定的。然后,我想将字符串值放入带有一列的内存表中,以便可以处理数据。我不知道这是否可以在MySQL中完成。也许需要肮脏的解决方法。

例如,我有字符串值:

Banana, Apple, Orange


现在,我想从我的MySQL 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中实现。

任何有关如何执行此操作的帮助将不胜感激!

最佳答案

您可以在列表中传递字符串,并使用prepared statements来运行查询,例如--

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);

关于mysql - 将数组传递给MySQL存储例程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55920960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com