나는이 다음 표 :SQL 서버 2008 R2 : 패턴 일치하는 문자열 반대
테이블 :
CREATE TABLE str_matching
(
colstr varchar(200)
);
데이터를 삽입 :
INSERT INTO str_matching VALUES('5sXYZA1010B')
INSERT INTO str_matching VALUES('A1010B')
INSERT INTO str_matching VALUES('AMZ103B15K')
INSERT INTO str_matching VALUES('B15K')
INSERT INTO str_matching VALUES('XC101')
INSERT INTO str_matching VALUES('C101')
INSERT INTO str_matching VALUES('502KMD1FZ10009L')
INSERT INTO str_matching VALUES('FZ10009L')
INSERT INTO str_matching VALUES('A9L')
INSERT INTO str_matching VALUES('XZ049L')
INSERT INTO str_matching VALUES('LM101')
INSERT INTO str_matching VALUES('9001')
INSERT INTO str_matching VALUES('9001A')
예상 출력 : 만 표시 할 하나의 문자열이 어떤 문자열의 마지막 부분과 일치하면 복제본으로 간주하는 중복 항목이있는 레코드.
시나리오 : 예를 들어 1
: 나는 두 문자열
이5sXYZA1010B
A1010B
이
2 문자열, 그래서 원하는 그러한 레코드를 표시합니다.
시나리오 : 예를 들어 2
: 나는 두 문자열
이9001
9001A
이
1 문자열, 그래서 원하는 그러한 레코드를 표시합니다.
참고 : 문자열의 길이는 고정되어 있지 않으며 어느 시점이든 일치 할 수 있습니다.
예상 결과 :
colstr
--------------------
5sXYZA1010B
A1010B
AMZ103B15K
B15K
XC101
C101
502KMD1FZ10009L
FZ10009L
9001
9001A
참고 : 그 반대의 패턴 매칭을 확인해야합니다. 문자열의 지정된 세트를 얻을 수
SELECT DISTINCT CA.colstr
FROM str_matching s1
JOIN str_matching s2
ON s1.colstr <> s2.colstr
AND s2.colstr LIKE '%' + s1.colstr
OR s1.colstr LIKE '%' + s2.colstr
CROSS APPLY (VALUES(s1.colstr),
(s2.colstr)) CA(colstr)
그러나 없습니다 Martin Smith 코드 당으로
, 나는에 수정했습니다.
이 변경 사항에 대해 확실 해요. – MAK
@MAK. . . 그것은 당신이 묻고있는 질문의 구현 인 것 같습니다. –