Często mam to wymaganie i SOMETIME, jeśli dobrze znasz kolumnę, której szukasz [rozmiar/format/długość], możesz zrobić rodzaj REGEX.
coś takiego:
DECLARE @MyListOfLocation varchar(255)
set @MyListOfLocation = '|1|32|36|24|3|'
Select LocationID
from Table
where @MyListOfLocation like '%|' + LocationID + '|%'
UWAGA: postać rury jest używany do ochrony zapytania z powrotem żadnej LocationID zawierający pojedynczy znak („1”, na przykład).
Powyżej znajduje się pełna przykład praca:
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 + '|%'
UWAGA! Ta metoda nie jest przyjazna dla indeksu!
Jeśli chcesz sumują Niektórzy (@MyListOfLocation) we wszystkich, że aby wykorzystać wykorzystanie indeksów, można zmodyfikować skrypt zrobić:
SELECT MyDATA.*
FROM HugeTableWithAnIndexOnLocationID as MyDATA
WHERE LocationID in (
Select LocationID
from Table
where @MyListOfLocation like '%|' + LocationID + '|%')
możliwe duplikat [SQL Server SP - Proszę przejść do parametru dla listy tablic "IN"?] (http://stackoverflow.com/questions/537087/sql-server-sp-pass-parameter-for-in-array-list) – Lamak
Czy rozważałeś użycie parametru [Table-Value Parameter Zamiast tego (http://msdn.microsoft.com/en-us/library/bb510489.aspx). To sprawi, że 'wybierz Lokalizacje z tabeli gdzie Gdzie LocationID w (Wybierz lokalizację z @LocationList)' –