一尘不染

在MySQL的`IN()`中使用逗号分隔的字符串

sql

如果用户定义的变量@x是一串用逗号分隔的数字,例如'1,2,4',是否可以在IN ()函数中使用它?

具体来说:

SET @x := '1,2,4';
SELECT * FROM t WHERE c IN (@x);

不选择t等于c等于1或2或4的行。


阅读 184

收藏
2021-03-08

共1个答案

一尘不染

您不能直接使用变量来执行此操作。根据您现在拥有的内容,服务器正在尝试执行select * form t where c in ('1,2,3');…显然,这不是您想要的,因为您要检查c是否包含给定的单个字符串。

您必须根据列表生成动态SQL,以使其正常工作。

2021-03-08