如何在MySQL存储过程中拆分逗号分隔文本(ID列表)以在SQL"IN"语句中使用结果.
SELECT * FROM table WHERE table.id IN (splitStringFunction(commaSeparatedData, ','));
Run Code Online (Sandbox Code Playgroud)
Dar*_*ide 43
对于MySQL来说这很简单:
SELECT * FROM table WHERE FIND_IN_SET(table.id, commaSeparatedData);
Run Code Online (Sandbox Code Playgroud)
参考:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set
小智 5
您可以在存储过程中使用预准备语句来实现此目的.您可以将整个选择查询创建为变量内的字符串,然后将逗号分隔的字符串连接到其IN子句中.然后,您可以从查询字符串变量中生成预准备语句并执行它.
DELIMITER ;;
create procedure testProc(in listString varchar(255))
BEGIN
set @query = concat('select * from testTable where id in (',listString,');');
prepare sql_query from @query;
execute sql_query;
END
;;
DELIMITER ;
call testProc("1,2,3");
Run Code Online (Sandbox Code Playgroud)