2010-01-15 2 views
5

mögliche Dubletten:
Parameterizing a SQL IN clause?
SQL Server SP - Pass parameter for “IN” array list?Hat SQL einen Listentyp, der in einer WHERE ... IN-Klausel verwendet werden kann?

Ich brauche für eine planlos Menge der ganzen Zahlen auf zwei verschiedenen Tabellen suchen:

SELECT 
    col_1, col_2 
FROM 
    LIKES_NUMBERS 
WHERE 
    col_1 IN (1,2,3,5,7,1021,10041411) 

SELECT 
    col_one, col_two 
FROM 
    LIKES_NAMES 
WHERE 
    col_one IN (1,2,3,5,7,1021,10041411) 

Gibt es eine SQL-Liste Typ, der kann an IN weitergegeben werden, damit ich mich nicht wiederhole? Z.B.

DECLARE @stuff UNOBTAINIUM(1,2,3,5,7,1021,10041411) 
-- ... 
WHERE col_1 IN (@stuff) 
-- ... 
WHERE col_one IN (@stuff) 

Erstellen eine temporäre Tabelle kommt in den Sinn, aber das scheint brutal.

+0

Duplizieren: http://stackoverflow.com/questions/537087/sql-server-sp-pass-parameter-for-in-array-list –

Antwort

2

Ja, Sie können hierfür eine table variable verwenden. Es ist wie eine temporäre Tabelle, aber lokal begrenzt.

1

Es gibt keinen Listentyp. Die temporäre Tabelle sollte in Ordnung sein, oder Sie können eine Tabellenvariable verwenden.

1

Bei der Verwendung von MS-SQL, neige ich dazu, XML-Dokumente zu diesem Zweck zu verwenden, die sich leicht aus nicht übergeben werden kann -SQL-Clients (im Gegensatz zu Temp-Tabellen, glaube ich) und abgefragt von MS-SQL-T-SQL-Syntax.

Verwandte Themen