2012-12-12 5 views
1

나는TSQL Where 문에서 두 테이블의 값을 비교하는 방법은 무엇입니까?

나는 그 분할하고 표로서 돌려 분할이라는 UDF가

내 쿼리에서

전에서 값을 매개 변수로 ID의 쉼표로 구분 된 문자열을 허용하는 저장 프로 시저를 반환 한 또 다른 쉼표로 구분 ID를

의 문자열에서

있는보기 내 문 내가 본질적으로

WHERE dbo.Split(@inputstring) IN dbo.Split(view.ViewString) 

말 그리고 내 입력 문자열의 값 내보기에 존재하는 유일한 행을 반환 할 문자열

어떻게하면이 작업을 가장 잘 수행 할 수 있습니까?

+0

뷰의 쉼표로 구분 된 목록의 원인은 무엇입니까? 그들은 실제로 그처럼 저장되어 있습니까? 아니면 뷰를 연결 한 다음 다시 분리 할 것입니까? (이 경우 기본 테이블을 알려주는 것이 훨씬 낫다.) –

+0

뷰는 연결된 ID를 별도의 함수를 사용하여 필드로 반환하고 나면 Split 함수가 테이블로 다시 분할한다. –

답변

2

@inputstring의 ID 중 하나 이상이 view.ViewString 인 경우 행을 선택해야 할 것으로 생각하십니까? 그럼 경우 :

WHERE EXISTS (select ID 
       from dbo.Split(@inputstring) t1 
         inner join dbo.Split(view.ViewString) t2 on (t1.id=t2.id)) 
관련 문제