2009-10-15 3 views
3

누구나 "="기호를 알고 있습니다.MySQL의 열 일치 방법

SELECT * FROM mytable WHERE column1 = column2; 

그러나 column1과 column2의 내용이 다른 경우에는 어떻게 될까요? (어쩌면 공간에 의해, 또는 다른 단어가). 나는이이 퍼지 일치라고 생각

SELECT * FROM mytable WHERE ....column matches column2 with .4523423 "Score"... 

:

은 할 수 있나요? 아니면 패턴 일치? 그것이 기술적 인 용어입니다.

편집 : 나는 Soundex와 Levenstein의 혼란에 대해 알고 있습니다. 그게 당신이 추천하는 것입니까?

+0

거기에 맞는 명령을 사용하여 관련성을 없앨 수있는 것이 있다고 생각합니다. – Petrogad

+0

찾고있는 용어는 편집 거리입니다. 일반적으로 Levenshtein distance로 구현됩니다. –

답변

5

찾고있는 것은 입니다. 그것은 두 문자열 간의 차이를 나타내는 숫자 값을 제공합니다.

MySQL에서는 저장 프로 시저를 작성해야합니다. Here은 도움이 될만한 아티클라입니다.

+0

나는 levenstein 거리를 사용해야한다는 것을 알고 있습니다. 그러나 이것을 어떻게 확장합니까? 4 천만 행이 있습니다. 어떻게 효율적으로이 작업을 수행하거나 서버를 손상시키지 않도록 배포 할 수 있습니까? – TIMEX

+3

누가 (foo)가 Levenshtein인가요? – Luiscencio

0

Lukasz Lysik은 데이터베이스 내부에서 퍼지 일치를 수행 할 수있는 저장 프로 시저에 대한 참조를 게시했습니다. 이 작업을 진행중인 작업으로 수행하려는 경우 가장 좋은 방법입니다.

일회용 작업으로 이것을 수행하고 복잡한 검사를 수행하려는 경우 또는 퍼지 일치를 정리하기 위해 복잡한 작업을 수행하려는 경우 퍼지 처리가 필요할 수 있습니다 파이썬 내에서 일치. (귀하의 태그 중 하나는 "파이썬"이므로 파이썬 솔루션에 개방적이라고 가정합니다 ...)

파이썬 ORM을 사용하면 데이터베이스 행당 하나의 객체로 파이썬 목록을 가져온 다음 전체 파이썬이 데이터를 분석 할 수있는 힘. 정규 표현식, Python Levenstein 함수 또는 다른 것을 사용할 수 있습니다.

파이썬에 대한 ORM은 아마도 SQLAlchemy 일 것입니다. 사실 좀 더 나은 Django에서 ORM을 좋아해요. 그것은 조금 더 간단하고, 나는 단순성을 중요하게 생각합니다. ORM 요구 사항이 복잡하지 않으면 Django ORM이 좋은 선택 일 수 있습니다. 의심 스럽다면 SQLAlchemy로 이동하십시오.

행운을 빈다.