mysql存储过程怎么传字符串参数_如何在MySQL存储过程中传递字符串列表?

bd96500e110b49cbb3cd949968f18be7.png

I'm trying to pass an array as a String in MySQL Stored Procedure but it doesn't work fine.

Here's my SQL Codes:

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

And here's how i call the procedure:

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

CALL search_equipment('some equipment', type);

Any ideas?

解决方案

Your friend here is FIND_IN_SET I expect. I first came across that method in this question : also covered in this question MYSQL - Stored Procedure Utilising Comma Separated String As Variable Input

So your procedure will become

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

This relies on the category string being a comma-delimited list, and so your calling code becomes

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

CALL search_equipment('some equipment', type);

(p.s. fixed a typo, in your arguments you had typed categoy)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值