2013-03-28 5 views
2

다음 쿼리를 사용하여 테이블에서 중복 된 전화 번호를 선택합니다.중복 전화 번호 찾기 (형식이 다를지라도)

SELECT id, REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(phone, "+", '') , ")", '') , "(", '') , "-", '') , ' ', '') AS strippedPhone 
FROM `customers` 
GROUP BY strippedPhone 
HAVING count(strippedPhone) >1 
LIMIT 0 , 300 

전화 번호가있는 분야에는보기가 좋지 않으며 영숫자 문자의 가능성은 고려하지 않습니다.

더 좋은 방법이 있습니까?

+0

복제본으로 무엇을하고 싶습니까? DB에서 제거하십시오. – Revent

+0

@Revent, 그것으로 보고서를 만들고 싶습니다. – Starx

+0

@pst, 아니요. – Starx

답변

0

내 생각에 당신은 전화 번호를 정상화하는 것입니다. 형식에 관계없이 전화 번호를 비교할 수있는 SQL 쿼리는 매우 비효율적입니다. 마치 전화 번호를 데이터베이스에 삽입하기 전에 다시 포맷하여 중복 된 번호를 확인하는 것이 쉬운 일은 아닙니다.

기존 데이터베이스에서이 작업을 수행하려면 데이터베이스의 데이터를 먼저 표준화해야하지만 한 번만 수행하면됩니다.

+0

이렇게하면 문제가 해결되지 않습니다. 그리고 저는 그것을 알고 있습니다. 고맙습니다. – Starx