具有多个参数的IN()函数

时间:2016-07-19 09:37:36

标签: mysql

样本数据

enter image description here

当我按以下方式设置参数时,得不到正确的结果。

查询:

SET @parmClientList ='7,11,14';

Select fkUserID from tbluserclient where MultipleClientID IN(@parmClientList);

但是当我直接声明为硬编码时,我得到了正确的结果。

查询:

select fkUserID from tbluserclient where MultipleClientID IN(7,11,14);

有人可以建议我如何将多个值传递给IN()函数参数。

1 个答案:

答案 0 :(得分:0)

IN()条件中的列表必须是文字列表,不会拆分字符串。使用FIND_IN_SET()

SELECT fkUserID FROM tbluserClient
WHERE FIND_IN_SET(CAST(MultipleClientID AS DECIMAL), @parmClientList);

使用CAST(MultipleClientID AS DECIMAL)执行将该列从逗号分隔列表转换为使用IN(7,11,14)进行测试时获得的单个数字的相同转换。在这两种情况下,它只检查列中的第一个数字是否在列表中。