gpt4 book ai didi

java - 如何在 MySQL 存储过程中传递字符串列表?

转载 作者:可可西里 更新时间:2023-11-01 07:20:33 27 4
gpt4 key购买 nike

我试图在 MySQL 存储过程中将数组作为字符串传递,但它不能正常工作。

这是我的 SQL 代码:

CREATE DEFINER=`root`@`localhost` PROCEDURE `search_equipment`(IN equip VARCHAR(100), IN category VARCHAR(255))
BEGIN
SELECT *
FROM Equipment
WHERE e_description
LIKE CONCAT("%",equip,"%")
AND e_type IN (category)
END

下面是我调用过程的方式:

String type = "'I.T. Equipment','Office Supply'";

CALL search_equipment('some equipment', type);

有什么想法吗?

最佳答案

我希望你的 friend 是 FIND_IN_SET。我第一次在这个问题中遇到该方法:也包含在这个问题中 MYSQL - Stored Procedure Utilising Comma Separated String As Variable Input

FIND_IN_SET 的 MySQL 文档在这里 http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set

所以你的程序会变成

CREATE DEFINER=`root`@`localhost` 
PROCEDURE `search_equipment`(
IN equip VARCHAR(100),
IN category VARCHAR(255)
)
BEGIN
SELECT *
FROM Equipment
WHERE e_description LIKE CONCAT("%",equip,"%")
AND FIND_IN_SET(e_type,category)
END

这依赖于类别字符串是逗号分隔的列表,因此您的调用代码变为

String type = "I.T. Equipment,Office Supply";

CALL search_equipment('some equipment', type);

(p.s. 修正了一个错字,在你的参数中你输入了 categoy)

关于java - 如何在 MySQL 存储过程中传递字符串列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16103058/

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