让我解释一下......我有一个表,其中包含一个列的分隔列表,需要用来从另一个表返回数据。 (不要问,我没有设计这个!)。 EG:
Set @DelimitedList = (Select stupid_column from Table_One)
这导致@DelimitedList包含'1,2,3';然后我想在后面的查询的'Where'子句中使用它...即
Select * from Table_Two where int_column in (@DelimitedList)
遗憾的是,这不起作用,因为SQL试图将@DelimitedList转换为失败的整数。 有什么方法可以将我的字符串列表“转换”或“转换”成整数数组吗?
非常感谢提前
答案 0 :(得分:2)
使用动态SQL,我不一定建议,您可以执行以下操作:
EXEC ('Select * from Table_Two where int_column in (' + @DelimitedList + ')')
您可以找到更多信息,here。
答案 1 :(得分:0)
这可以通过以下方式完成: 取代
WHERE int_column in (@DelimitedList)
与
WHERE ','+@DelimitedList+',' LIKE '%,'+CAST(int_column AS Varchar(10))+',%'
它也可能取决于您的RDBMS。例如,在MySQL中,您可以使用FIND_IN_SET()函数。