将从列返回的字符串拆分为整数

时间:2014-01-14 10:09:49

标签: sql casting

让我解释一下......我有一个表,其中包含一个列的分隔列表,需要用来从另一个表返回数据。 (不要问,我没有设计这个!)。 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转换为失败的整数。 有什么方法可以将我的字符串列表“转换”或“转换”成整数数组吗?

非常感谢提前

2 个答案:

答案 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()函数。