2010-03-08 1 views
3

Visual Studio Designer에서 작성한 쿼리에 약간의 문제가 있습니다.많은 OR 절이있는 DataSet

같은 열에 'OR'절이 많이 필요한 쿼리가 필요합니다.

나는 운영자 'IN'을 발견,하지만 난 비주얼 스튜디오 디자이너에서 그것을 사용하는 방법을 알고하지 않습니다

SELECT EmployeeID, FirstName, LastName, HireDate, City 
FROM Employees 
WHERE City IN ('Seattle', 'Tacoma', 'Redmond') 

나는이 방법으로 그것을 할 시도 :

IN

SELECT [MachineryId], [ConstructionSiteId], [DateTime], 
     [Latitude], [Longitude], [HoursCounter] 
FROM [PositionData] 
WHERE [MachineryID] IN @MachineryIDs 

하지만 작동하지 않습니다.

많은 OR 절을 처리하는 다른 방법이 있습니까?

도움 주셔서 감사합니다.

+0

확인이 SO 질문 : [? 절에 SQL을 매개 변수화 (http://stackoverflow.com/questions/337704/parameterizing-a-sql-in-clause) 답변에 대한 – zendar

답변

1

매개 변수를 사용하여 IN을 수행하면 기본적으로 다음과 같이 사용됩니다.

declare @SQL varchar(600) 
set @SQL = 'select * from tbl where Cast([MachineryID] as varchar(255)) in ('+ @MachineryIDs +')' 
EXEC(@SQL) 
+0

감사합니다. 매우 이상합니다. @MachineryIDs 매개 변수로 시도하면 ('1111', '2222,'3333 '값으로 채울 때) 작동하지 않습니다. 행이 리턴되지 않습니다. @MachineryIDs 매개 변수를 제거하고 [MachineryID] IN ('1111', '2222', '3333')이라고 쓰면 제대로 작동합니다. @MachineryIDs 매개 변수에 문제가 있습니다. 같은 문제가 있습니까? – Silvan

+1

@MachineryIDs를 사용하는 경우 쿼리가 아마도 다음으로 해석됩니다. IN ('1111, 2222, 3333') - '문자열의 시작과 끝 부분 만 표시합니다. 목록의 모든 항목 주위에 있어야합니다 ('1111', '2222', '3333'). – Leslie