2013-10-28 33 views
0

我遇到了一個難以解決的問題。希望你能幫助我。加入一個字符串中的ID列表與另一個表

我有一個名爲「TheOrderIDs」的字符串來自不同的表/字段,並且此字符串(Varchar)包含此格式爲「1,2,3,4,5,6,7」的訂單ID。

的多個ID常規查詢是:

Select * from tblOrder where OrderID IN (1, 2, 3, 4, 5, 6, 7) 

但是,如果我救「TheOrderIDs」在一個變量,並把它在查詢IN()語句,它不會工作。

任何想法如何將字符串OrderIDs轉換爲查詢IN()理解的格式?

感謝,

+1

爲什麼通過'OrderID'鏈接到'tblOrder'的表中沒有'TheOrderIDs'行? –

+2

http://www.sommarskog.se/dynamic_sql.html#List –

+0

@TimSchmelter,這是一個小設計問題。我正在尋找方式來將這些ID在行/表中或以某種方式轉換爲查詢IN()子句將它們識別爲多個ID的類型。 – milacay

回答

1

當我有這種類型的設計問題,我不喜歡這樣寫道:

Select * from tblOrder 
where ',' + REPLACE(@VarcharWithCommaSeparatedValues, ' ', '') + ',' LIKE '%,' + CONVERT(VARCHAR(10), OrderID) + ',%' 
+0

由於OP似乎並不需要根據這些ID來「加入」,所以你的技巧很簡單。 –

+0

謝謝,尼斯解決方法! – milacay

1

一種方法是使用動態SQL - 例如:

use mydb; 
go 
declare @sql varchar (100) 
declare @vals varchar(100) 
set @vals='(1,2,3,4,5,6,7)' 
set @sql = 'Select * from tblOrder where OrderID IN' + @vals 
exec (@sql) 

我不不喜歡這個(至少是因爲表演),但它應該工作。

+0

這也適用。謝謝! – milacay

相關問題