2011-04-01 2 views
0

열 이름 company_name (string)이있는 테이블이 있습니다.이 열의 중복 값을 찾아야합니다. 별개 또는 그룹을 사용할 수 없습니다. 왜냐하면 그것들은 정확히 같지 않기 때문입니다. 예 :SQL에서 정확히 같지는 않지만 비슷하지 않은 중복 문자열 값을 찾는 방법

atec,inc 
atec inc 
ate inc 

abc group 
abc groups 
abc grups 

는 어떻게 SQL에서 이러한 항목을 찾거나 이에 대한 어떠한 루비 라이브러리가 않습니다.

답변

0

SQL에 SELECT WHERE A SORTA_OF_LIKE B가 있지만 "Levenshtein distance"를 찾으십시오. 아마도 원하는대로 일을 수행하는 방법 일 수 있습니다.

1

MySQL이 지원하는 것 같습니다 당신이 정규 표현식으로 시도 할 수있는 변화에 패턴의 일종, (우리는 확실히 않습니다 포스트 그레스를 사용)가 있다면 : 그런 경우가 아니라면

http://dev.mysql.com/doc/refman/5.1/en/regexp.html

는, 앱에서 해봐야 할 것 같습니다. Pete가 언급 한 것처럼 비슷한 소리를내는 데 필요한 다양한 알고리즘이 있으므로 Levenshtein 거리, Simhashes의 해밍 거리 및 Kölner Phonetic Encoding을이 용도로 사용합니다.

+0

정규 표현식을 사용하여 선택할 수 없습니다. 참/거짓 (일치/일치하지 않음) 또는 그 효과를 반환하십시오. – dogmatic69

+0

@ domatic69 Postgres에는 SELECT record from myrecords WHERE record ~ ​​'A';와 같은 것들이 있습니다. http://oreilly.com/pub/a/databases/2006/02/02/postgresq_regexes.html –

0

이 기능 인덱스를위한 완벽한 사용이 될 것입니다,하지만, MySQL은 그 중 하나가 생각하지 않는 한 나는 전체를 제안 할 수 있습니다 MySQL에서 텍스트 검색?

http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html

특히 부울 검색 :

http://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html 또한

, 당신은 단어의 형태소 분석에 익숙하지 않은 경우, 그것은 또한 당신이 검색의 검색을 증가 도움이 될 강력한 개념이다 .

희망이 있습니다.