Spesso ho questo requisito e SOMETIME, se si conosce molto bene la colonna su cui si sta cercando [la dimensione/formato/lunghezza], si può fare una specie di REGEX.
Qualcosa di simile a questo:
DECLARE @MyListOfLocation varchar(255)
set @MyListOfLocation = '|1|32|36|24|3|'
Select LocationID
from Table
where @MyListOfLocation like '%|' + LocationID + '|%'
NOTA: il personaggio PIPE è utilizzato per proteggere la query da restituire qualsiasi LocationID che contiene un singolo carattere (la '1', per esempio).
Ecco un esempio di lavoro completo:
DECLARE @MyListOfLocation varchar(255)
set @MyListOfLocation = '|1|11|21|'
SELECT LocationName
FROM (
select '1' as LocationID, 'My Location 1' as LocationName
union all
select '11' as LocationID, 'My Location 11' as LocationName
union all
select '12' as LocationID, 'My Location 12' as LocationName
union all
select '13' as LocationID, 'My Location 13' as LocationName
union all
select '21' as LocationID, 'My Location 21' as LocationName
) as MySub
where @MyListOfLocation like '%|' + LocationID + '|%'
ATTENZIONE! Questo metodo non è adatto all'Indice!
Se si vuole fare un po 'di aggiungere IN (@MyListOfLocation) in tutto ciò che, di sfruttare l'uso di indici, è possibile modificare lo script fare per:
SELECT MyDATA.*
FROM HugeTableWithAnIndexOnLocationID as MyDATA
WHERE LocationID in (
Select LocationID
from Table
where @MyListOfLocation like '%|' + LocationID + '|%')
possibile duplicato del [Server SQL SP - Passare parametri per l'elenco di array "IN"?] (http://stackoverflow.com/questions/537087/sql-server-sp-pass-parameter-for-in-array-list) – Lamak
Hai considerato di utilizzare un [parametro tabella-valore ] (http://msdn.microsoft.com/en-us/library/bb510489.aspx). Sarebbe '' selezionare Posizioni dalla tabella dove Dove PosizioneID in (Seleziona posizione da @LocationList) ' –