当前位置: 首页 > 面试题库 >

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

郑茂勋
2023-03-14
问题内容

我正在尝试在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

这是我如何html" target="_blank">调用该过程:

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

CALL search_equipment('some equipment', type);

有任何想法吗?


问题答案:

我的朋友在这里是FIND_IN_SET。我首先在此问题中遇到了该方法:此问题也涉及了MYSQL-使用逗号分隔的字符串作为变量输入的存储过程

有关FIND_IN_SET的MySQL文档,请参见http://dev.mysql.com/doc/refman/5.0/zh-CN/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);

(ps修正了一个拼写错误,在您输入了categoy的参数中)



 类似资料:
  • 问题内容: 我正在执行上面的存储过程。我收到以下错误: 消息245,级别16,状态1,过程S_Comp,第8行在将varchar值“存在的Amruthanot”转换为数据类型int时,转换失败。 请帮我解决这个问题 问题答案: 您将结果放在值中,而不是传递的值中。 从MSDN (返回) 是 返回 的整数值。存储过程可以将整数值返回到调用过程或应用程序。 更改您的程序。 调用程序

  • 我有数字,我想在存储过程中将这些数字转换成字符串。 请回复。 谢谢!

  • 本文向大家介绍Mysql通过存储过程分割字符串为数组,包括了Mysql通过存储过程分割字符串为数组的使用技巧和注意事项,需要的朋友参考一下 分割字符串为数组需要用到 三个mysql 的函数 : REVERSE(str) 返回颠倒字符顺序的字符串str。 SUBSTRING_INDEX(str,delim,count) 返回从字符串str的第count个出现的分隔符delim之后的子串。如果coun

  • 问题内容: 我正在创建一些存储过程来管理我的数据库。特别是,我想创建一个存储过程来编辑特定行的一列,但是我想通过将列名作为参数传递来做到这一点。 那就是我想做的 使用该参数,我找到了要编辑的特定行,并且我想使用该参数来仅编辑我想要的列。 正如我在其他主题上所读到的那样,我已经尝试使用或定义局部变量,但没有找到解决方案。 有什么帮助吗? 问题答案: 您将需要使用 动态SQL : 请注意,正如Paul

  • 问题内容: 我有这个存储过程。例如,如何间隔5秒运行一次?像删除时间戳超过一天的数据的例程一样? 问题答案: 您可以使用mysql Scheduler每5秒运行一次。您可以在以下网址找到示例:http://dev.mysql.com/doc/refman/5.1/en/create- event.html 从未使用过它,但我希望它能起作用:

  • 问题内容: 通过此链接:如何通过引用传递变量?我们知道,Python在将字符串(作为不可变类型变量)作为参数传递给函数时会复制它,但是我认为如果字符串很大,它将浪费内存。在许多情况下,我们需要使用函数来包装一些字符串操作,所以我想知道如何使其更有效? 问题答案: Python不会复制传递给函数的对象(包括字符串): 如果您需要“修改”函数中的字符串,请返回新字符串并将其分配回原始名称: 不幸的是,