2014-01-14 52 views
1

讓我解釋一下......我有一個表,它有一列包含一個需要用來從另一個表返回數據的分隔列表。 (不要問,我沒有設計這個!)。 EG:將從列返回的字符串拆分爲整數

Set @DelimitedList = (Select stupid_column from Table_One) 

這會導致@DelimitedList包含'1,2,3';然後我想在「去哪兒」子句中使用這個用於後續查詢......即

Select * from Table_Two where int_column in (@DelimitedList) 

可悲的是作爲SQL試圖@DelimitedList其轉換到失敗的整數,這並不工作。 有沒有什麼方法可以將我的字符串列表「轉換」或「轉換」爲整數數組?

提前

+2

您使用的是什麼RDBMS? – valex

+0

可能重複的[Split in SQL](http://stackoverflow.com/questions/2647/split-string-in-sql) –

+0

這是MS-SQL嗎?你可以用兩個語句在應用程序層中完成它嗎? – Jodrell

回答

0

這可以以下方式進行: 更換

WHERE int_column in (@DelimitedList) 

WHERE ','[email protected]+',' LIKE '%,'+CAST(int_column AS Varchar(10))+',%' 

此外,它可以取決於你的RDBMS。例如在MySQL中,您可以使用FIND_IN_SET()函數。

+0

謝謝Valex;這就像一個魅力。 – Nibbo

2

非常感謝使用動態SQL,這我並不推薦,你可以做如下:

EXEC ('Select * from Table_Two where int_column in (' + @DelimitedList + ')') 

你可以找到更多信息,here

+0

感謝Thejaka,這確實有用,但我認爲我更喜歡valex的版本。我確實嘗試過EXEC,但弄錯了,所以你的解決方案已經清除了我如何做到這一點,並將在未來有用。 – Nibbo