종종이 요구 사항이 있으며 때때로입니다. [크기/형식/길이]에서 검색하는 열을 잘 알고 있으면 REGEX를 사용할 수 있습니다. 이 같은
뭔가 :
DECLARE @MyListOfLocation varchar(255)
set @MyListOfLocation = '|1|32|36|24|3|'
Select LocationID
from Table
where @MyListOfLocation like '%|' + LocationID + '|%'
참고 : 파이프 문자 (예를 들어, '1') 하나의 문자가 포함 된 LocationID를 반환에서 쿼리를 보호하는 데 사용됩니다.
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 + '|%'
경고 :
여기에 완전한 작동 예입니다! 이 방법은 색인 친화적이지 않습니다! 당신이 활용, 모든 점에서 INDEXES의 사용을 일부 IN (@MyListOfLocation)를 추가 할 싶은 경우에, 당신은 당신의 스크립트를 수정할 수 있습니다
할 일 :
SELECT MyDATA.*
FROM HugeTableWithAnIndexOnLocationID as MyDATA
WHERE LocationID in (
Select LocationID
from Table
where @MyListOfLocation like '%|' + LocationID + '|%')
[SQL 서버 SP의
가능한 중복 - 매개 변수를 전달 "IN"배열 목록에 대한?] (http://stackoverflow.com/questions/537087/sql-server-sp-pass-parameter-for-in-array-list) – Lamak
당신은 [표 값 매개 변수 ] (http://msdn.microsoft.com/en-us/library/bb510489.aspx)를 참조하십시오. 'Select Location from where LocationID in (@LocationList에서 위치 선택) ' –