1

는 모든 SQL Server 2000의 전문가에 대한 질문 : 나는 이미 찾을 수 있습니다 ... 난 단지 1 개 테이블이SQL : 필드에 중복 값을 찾기 만 사용하여 SUBSTRING() 여기

임의의 값의 경우 특정 필드는 다른 레코드에도 나타납니다.

즉이 : 어떤 기록이 같은 필드에 다시 필드에 "ABCDEFGHI"다음 "ABCDEFGHI"을 가지고 있는가 ...하지만 또 다른 기록한다.

그러나 부분 문자열을 사용하려고하면 문제가 발생합니다.

즉이 : 모든 기록은 에서 필드를 "CDEF"이 다음 "DEFG"을 다시 같은 분야에 ... 그러나 다른 레코드 않습니다. (편집 : 물론 일치하지 않을 것입니다.)

다른 필드의 PART와 1 필드를 비교하려고합니다. 문자 만 3-6 자, 문자 4-7 만 비교하십시오. (두 입력란 모두 내 시작일 범위를 지정해야합니다.) 특정 문자는 무엇이 중요하지 않습니다. 그냥 그들이 '일치'.

이 작동하지 않습니다

SELECT t1.ID + ' + ' + t2.ID 
FROM InfoTable As t1   
INNER JOIN InfoTable AS t2  ON t1.ID = SUBSTRING(t2.ID, 3, 4) 

(편집 : 나는 또한 단지 자신을 일치하는 모든 레코드를 나열하지해야합니다.)

+0

그것은 지금까지의 네가 여기에서 찾으려고하는 것을 깨끗하게해라. 어디서나 "DEFG"가있는 다른 모든 레코드와 연결된 "CDEF"가있는 모든 레코드를 원하십니까? "CDEF"가 위치 3에서 시작하여 "DEFG"가 4 위치에서 시작하는 다른 모든 레코드에 연결된 모든 레코드입니까? 동일한 공통 문자열의 문자 4 - 7을 갖는 다른 모든 레코드에 링크 된 일반 문자열의 문자 3 - 6을 가진 모든 레코드입니까? 다른 것? –

+0

어디서나? 아니요, 제가 지정한 시작/끝 부분 문자열입니다. 위치 a에서 시작하고 b 문자 길이가 ... 위치 c에서 시작하여 길이가 d자인 일치하는 레코드. (물론 b와 d는 일치가 일어나기 위해 동일해야합니다.) – HelenJ

답변

1

아마도

SELECT t1.ID + ' + ' + t2.ID 
FROM InfoTable As t1   
INNER JOIN InfoTable AS t2  ON SUBSTRING(t1.ID,3,6) = SUBSTRING(t2.ID, 4, 7) 
+0

나는 그것을 시도했고, 스스로 일치하는 레코드를 반환하는 것처럼 보입니다. '같은 기록'경기를 제외 할 수있는 방법이 있습니까? – HelenJ

+0

ON 절에 다른 조건을 추가하십시오 ... 및 t1.id

+0

WHERE 절에'AND T1.ID <> T2.ID'를 추가하십시오. 그것은 ID가 유일하다고 가정합니다. 테이블 정의, 샘플 데이터 및 예상 결과를 제공하는 것이 가장 좋을 것입니다. 이는 SQL 쿼리 질문을 게시 할 때 항상 좋은 아이디어입니다. –