2013-03-09 2 views
1

데이터를 시스템에 가져 오기 위해 엄청난 탁월성을 보았습니다. 필요한 데이터 변환을 수행 할 수 있도록 SQL 테이블로 가져 왔습니다. 나는 바보 같은 문제를 많이 겪었습니다. (항상하지 않음) 두 번 내가 이름을 반복 한 많은는 회사 이름에서SQL Server에서 열 데이터의 반복을 검사합니다.

: 당신이 할 수

[CompanyName] 
INTERDYN SA INTERDYN SA 
EARTH TOUR EARTH TOUR 
SOUNDLIGHTS JAJ CYTER 

더 패턴이 없습니다 나는 해결책을 찾을 수 없습니다 최신 하나는 다음과 만나다. 복제물을 발견하고 쌍둥이 회사 이름을 제거하는 교활한 방법이 있습니까?

+1

필드를 잘라내어 필요한 경우 짝수 개의 문자로 채우고 두 개의 동일한 부분으로 나누고 다시 트리밍 한 다음 다른 것과 똑같은지 확인하십시오. :) –

+0

첫 번째, 말하자면, 8 문자를 가져 와서 CharIndex가 9 번째 위치에서 부분 문자열에 있는지 확인하십시오. –

+0

GPS 제조업체 인 Tom Tom과 사업을하지 않기를 바랍니다. –

답변

2

문자열의 첫 번째 부분과 마지막 부분을 비교하여 가운데 문자가 공백인지 확인하는 것입니다.

CREATE TABLE Companies 
( 
    id int identity 
, CompanyName varchar(50) 
) 

INSERT INTO Companies (CompanyName) 
VALUES ('test') 
    , ('test test') 
    , ('testtest') 
    , ('testz test') 

-- Just query the corrected list 
SELECT CASE WHEN substring(CompanyName, LEN(CompanyName)/2+1, 1) = ' ' and substring(CompanyName, 1, LEN(CompanyName)/2) = substring(CompanyName, LEN(CompanyName)/2+2, LEN(CompanyName)) 
      THEN substring(CompanyName, 1, LEN(CompanyName)/2) 
      ELSE CompanyName 
     END 
FROM Companies 

-- update the incorrect values 
UPDATE Companies 
    SET CompanyName = substring(CompanyName, 1, LEN(CompanyName)/2) 
WHERE substring(CompanyName, LEN(CompanyName)/2+1, 1) = ' ' 
    AND substring(CompanyName, 1, LEN(CompanyName)/2) = substring(CompanyName, LEN(CompanyName)/2+2, LEN(CompanyName)) 

select * from Companies 

drop table Companies 
관련 문제