gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 17:51:14 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/49317496/

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