2013-07-09 3 views
1

4 개의 항목이있는 테이블이 있습니다.이미 동일한 조건이 충족되면 SELECT LIKE 문을 무시하십시오.

CREATE TABLE tab( 
    name Text 
        ); 

    INSERT INTO "tab" VALUES('Intertek'); 
    INSERT INTO "tab" VALUES('Pntertek'); 
    INSERT INTO "tab" VALUES('Ontertek'); 
    INSERT INTO "tab" VALUES('ZTPay'); 

Pntertek & Ontertek는 철자가 정확 인터텍의 퍼지 중복입니다. 퍼지 중복과 철자가 정확한 이름으로 구성된 목록을 만들고 싶습니다.

SELECT name FROM tab WHERE name LIKE '%ntertek' 
    AND (SELECT COUNT(*) FROM tab WHERE name LIKE '%ntertek') >1; 
    SELECT name FROM tab WHERE name LIKE '%ntertek' 
    AND (SELECT COUNT(*) FROM tab WHERE name LIKE '%ntertek') >1; 
    SELECT name FROM tab WHERE name LIKE '%ntertek' 
    AND (SELECT COUNT(*) FROM tab WHERE name LIKE '%ntertek') >1; 
    SELECT name FROM tab WHERE name LIKE '%TPay' 
    AND (SELECT COUNT(*) FROM tab WHERE name LIKE '%TPay') >1; 

이 같은 정보를 포함 3 개 목록을 생성합니다 내가 네 이름을 가지고

, 나는 4 개 검색 기준을 가지고있다. 첫 번째 결과를 반환하는 경우 두 번째 및 세 번째 동일한 SELECT 문을 무시하고 싶습니다. SQLite를 사용하여이 작업을 수행 할 수 있습니까?

나는 sqlite와 프로그래밍 전반에 관한 초보자이므로 어떤 도움을 주시면 대단히 감사하겠습니다.

미리 감사드립니다.

답변

0

쿼리를 반환 하시겠습니까? 중복 가능성이 있습니까? 그렇다면 having 문을 포함시켜 하나의 쿼리로 위의 작업을 수행 할 수 있습니다. 그러나 현재 사용중인 방법은 이름의 시작 부분에서만 차이점을 허용합니다. 필자는 편집 거리 알고리즘 (Levenshtein 거리라고도 함)과 같은 것을 조사하여 한 필드에서 변경해야하는 문자 수를 식별하여 다른 필드와 동일하게 만들 것을 제안합니다. 난 그냥 엑셀을 사용하여 SELECT 코드 라인을 중복 제거에 의존 한 http://www.sqlite.org/spellfix1.html

+0

:

다음 링크에서 가능한 SQLite는 구현의 세부 사항이 있습니다. 이것은 내가 사용할 수있는 기준의 예일 뿐이므로 훨씬 더 엄격한 검색 프로세스를 계획하고 있습니다. 감사합니다. –