MySQL存储过程,接受参数中具有多个值的字符串

时间:2016-02-03 05:55:48

标签: mysql stored-procedures

我想要最好的方法来调用存储过程,其中我在单个参数中有多个值,例如City参数,其值为'london','lyon','kln'等等。

我的存储过程就像这样

CREATE PROCEDURE `GetCityEmpData`(IN `City` VARCHAR(64))
BEGIN 
   SELECT * FROM Employees 
   WHERE Employees.City in (City);
END

并像这样称呼它

call GetCityEmpData("'London',Lyon'") ;

它返回0行,其中有给定参数的数据。 没有准备声明可以执行相同的操作吗?

2 个答案:

答案 0 :(得分:4)

你可以试试这个:

CREATE PROCEDURE `GetCityEmpData`(`City` VARCHAR(64))
BEGIN
   set @query = concat("SELECT * FROM Employees 
                        WHERE Employees.City in (" , City , ")");

    PREPARE stmt FROM @query;
    EXECUTE stmt ;
END

然后你可以按照自己的意愿调用你的程序:

call GetCityEmpData("'London','Lyon'") ;

答案 1 :(得分:1)

您可以使用find_in_set方法完成此操作

CREATE PROCEDURE `GetCityEmpData`(IN `City` VARCHAR(64))
BEGIN 
   SELECT * FROM Employees 
   WHERE FIND_IN_SET (Employees.City ,City);
END

并像

那样称呼它
call GetCityEmpData('London,Lyon');