样本数据
当我按以下方式设置参数时,得不到正确的结果。
查询:
SET @parmClientList ='7,11,14';
Select fkUserID from tbluserclient where MultipleClientID IN(@parmClientList);
但是当我直接声明为硬编码时,我得到了正确的结果。
查询:
select fkUserID from tbluserclient where MultipleClientID IN(7,11,14);
有人可以建议我如何将多个值传递给IN()函数参数。
答案 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)
进行测试时获得的单个数字的相同转换。在这两种情况下,它只检查列中的第一个数字是否在列表中。