如何在MySQL存储过程中拆分逗号分隔文本

Pet*_*nar 16 mysql sql

如何在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

  • 哇.这正是我想要的!谢谢.这应该是我认为正确的答案. (4认同)
  • @Peter Stegnar您应该考虑改变最佳答案. (3认同)
  • 尝试将此功能与大数据一起使用......您可以等待多年 (2认同)

小智 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)