【发布时间】:2013-12-08 10:34:02
【问题描述】:
我正在尝试创建一个存储过程,它将以逗号分隔的列表作为值并将其推送到带有 IN 子句的 select 语句中。我知道 find_in_set 有效,但确实有性能开销。我也尝试过准备语句,但问题仍然存在。
我的例子:
我的参数是 sp1,包含值:'valuex, valuey, valuez'。
BEGIN
set @sql = concat('select * from tablename WHERE assignedTo in (', sp1, ')');
PREPARE q FROM @sql;
execute q;
END
正如预期的那样,这会引发错误,因为 SQL 会将值视为列名。我的问题是如何实现:'valuex','valuey','valuez' FROM 'valuex, valuey, valuez'?
【问题讨论】: