MYSQL-使用逗号分隔的字符串作为变量输入的存储过程

我希望有人能够提供帮助。我创建了我的第一个存储过程" title="存储过程">存储过程(没什么花哨的),但是我遇到了问题。

我想给它一个字符串输入,例如1,2,3,4,5,然后它做一个简单的 SELECT * FROM [TABLE] WHERE EAN IN (VAR);

因此,存储的过程如下所示:


– Routine DDL

– Note: comments before and after the routine body will not be stored by the server


DELIMITER $$

CREATE PROCEDURE moments.new_procedure(IN var1 VARCHAR(255))

BEGIN

SELECT * FROM moments.PRODUCT WHERE EAN IN (var1);

END

我正在尝试像这样执行它:

作品

call moments.new_procedure('5045318357397')

不起作用

call moments.new_procedure('5045318357397,5045318357427');

这会执行,但不会带来任何结果。是否将第二条语句归类为字符串,以便执行此操作:

select * from moments.PRODUCT WHERE EAN IN ('5045318357397,5045318357427')

而不是这样:

select * from moments.PRODUCT WHERE EAN IN ('5045318357397','5045318357427')

如何在执行查询中格式化输入,以使其以逗号分隔的字符串作为输入?

回答:

您可以使用:

SELECT * FROM moments.PRODUCT 

WHERE FIND_IN_SET(EAN, var1)

假设它实际上是逗号分隔的,这应该可以工作。在这种情况下,任何其他定界将不起作用。

以上是 MYSQL-使用逗号分隔的字符串作为变量输入的存储过程 的全部内容, 来源链接: utcz.com/qa/404984.html

回到顶部