2014-11-12 7 views
1

테이블이 두 개 있습니다 (ImportImportItem). 하나의 Import에는 복수 ImportItem이 있습니다. 하나의 ImportItem에는 하나의 Import가 있습니다.SQL Server 테이블의 nvarchar 열에서 중복 확인

ImportItem에는 CountryIDs이라는 열이 있습니다. NVARCHAR(MAX)입니다. 그것은 ; 구분 기호로 ID 문자열입니다. 예를 들어 3; 4; 5;...

중복을 확인해야합니다. 중복을 확인하려면 실제로 어떤 오류가 발생해야합니다. 따라서 3; 4; 3; ... 3가 중복되었습니다.

가 나는 ItemNo 1을 반환하는 문자열 (nvarchar)을 분할하는 (나는 그것을 사용하는 들었다 나는 그 함수를 작성하지 않은)와 앞의 예에서 (열 ItemNoItem있는 테이블을 반환하는 분할 기능이 3 Item에 대한 ItemNo에 대한 Item, 2, 4.

나는 프로 시저를 작성해야합니다. 내 질문은 내가 주어진 ImportItem ID에 대한 CountryIDs의 칼럼을 통해 반복하고 그것을 분할하고 중복 확인 할 수있는 방법이다?

답변

3

apply 사용할 수 있습니다. 항목 목록을 얻으려면 다음과 같이하십시오.

select ii.itemno, s.c, count(*) as cnt 
from importitem ii apply 
    dbo.split(ii.countryids) as s(c) 
group by ii.itemno, s.c 
having count(*) > 1; 

목록이 있으면 저장 프로 시저에서 처리하는 방법을 결정할 수 있습니다.

관련 문제