2011-02-14 5 views
0

소스에서 함께 뭉근하게 한 MySQL에 주소 문자열이 있습니다. 정규 표현식이나 다른 방법을 사용하여 MySQL에서 문자열을 사용 가능한 부분으로 분리하는 것이 가능하다고 생각합니다. 그러나 이것이 어떻게 실현 될 수 있는지를 알지 못합니다.MySQL에서 함께 모아진 주소 문자열을 분리하는 방법

는 기본적으로 각 문자열은이 예제 같은 것을 (나는 각 비트가 무엇인지 보여 정상에 마커를 추가 한)을 찾습니다

<-------------><-------><-><--> 
123 Fake StreetRESERVOIRVIC3001 
<-----------------><--------------------><------><-><--> 
Brooks Nursing Home123 Little Fake StreetSMITHTONNSW2001 
<-------------------><-------------------><--- ><><--> 
Grange Police StationShop 1 Fairytale LaneGRANGEWA8001 

주소 정보를 선택적으로 두 개의 라인으로 분할 될 예정 주소 , 교외, 주 및 우편 번호. 저는 호주에 있으므로 NSW, VIC, QLD, WA, SA, NT 또는 ACT 중 하나이며 우편 번호는 항상 맨 끝에 4 자리 번호가됩니다.

가능한 방법은 교외가 항상 대문자로 표시되며 상태 및 우편 번호는 상태에 따라 마지막 6 ~ 7자를 초월 할 수 있으며 주소 정보의 처음 두 줄은 깨질 수 있습니다 그 사이에 공백 문자가없는 경우 변경됩니다.

나는 이처럼 약 10 만 건의 기록을 가지고 있으므로, 손을 거치면서 그렇게하는 것은 시간이 많이 걸릴 것입니다. 이 일을 프로그래밍 방식으로하는 방법에 대한 도움은 매우 감사하겠습니다.

+1

"123 McDonald 's Way"가 표시되면 어떻게됩니까? 주소 부분 경계가 아닌 사례가 변경되었습니다. –

+1

나는 mysql 대신에 perl이나 python, 또는 sed와 awk와 같은 스크립트 언어 태그로 이것을 재 게시 할 것이다. 처음 두 필드를 분리하는 데 실제 문제가있을 것입니다. 프로그래밍 언어가 이것을 공격하는 더 좋은 방법 일 것입니다. –

답변

1

공백이 없습니까? 가장 큰 총 ...

MySQL에는이를 처리 할 도구가 없으므로 외부 프로그램을 사용하여 데이터베이스에 액세스해야합니다. 필자는 이와 같은 조작을 위해 Perl을 사용하는 경향이 있습니다.

끝에서부터 시작하여 뒤로 작업하십시오 ... 마지막 네 자리는 숫자 여야하고 그 앞에 오는 문자는 7 가지 옵션 중 하나 여야합니다. 그 지식을 사용하면 2 필드와 6-7자를 줄일 수 있습니다.

예를 들어 이제는 대문자로 끝나는 도시가 생겼습니다 ... 구문을 분석하면 주와 지역 번호가 일치해야합니다. 온라인으로 몇 분 안에 우편 번호 데이터베이스를 찾을 수 있습니다.

남은 이름과 주소로 약간의 변동이있을 수 있으며, 운이 좋았 으면 좋겠습니다. 소문자와 대문자 사이의 공백 부족이나 문자와 숫자를 중단 점으로 집중할 수 있다는 점에서 머리를 맞출 수 있습니다.

+0

+1 플러스 행운을 위해. –

0

챌린지 허용. 나는 "101 St. Mark 's St."을 허용하는 몇 가지 기본적인 구두점을 넣을 것입니다. 등.

/^(([\w\'\.](?=[a-z \'\.])|)+[a-z\'\.])?(([\w\'\.](?=[a-z \d\'\.])|)+[a-z\.\'])([A-Z]+)(NSW|VIC|QLD|WA|SA|NT|ACT)(\d{4})/ 

아마 조금 더 정리를 사용할 수 있지만 (lookbehind, 자바 스크립트의과 (내가 생각하는) 루비 같은 일부 구현 내다을 지원하지만) 기본 내다과 정규식을 지원하는 모든 언어에서 작동합니다 . (그리고이 퍼즐은 저의 숙면을 잘 지켜주었습니다.) 적어도 당신이 제공 한 세 가지 예를 다루었습니다.

덧붙여 2problems.com은 정규식을 신속하게 테스트 할 수있는 훌륭한 사이트입니다. 내가이 수수께끼를 풀기 위해 사용했던 것입니다. 그것을 만든 사람은 정말로 천재 였을 것입니다. 이 Ajax를 만드는 방식으로 작동하기 때문에 배후 루비 스크립트 호출하지만 (는 koff는 koff)

Rubular는 조금 느리게, 또 다른 좋은 옵션입니다. 하지만 입력 된 패턴과 건초 더미에 연결할 수 있다는 장점이 있습니다. here's this pattern on Rubular. 2 명의 녀석은 언젠가 그와 비슷한 일을 실제로 수행해야합니다.

관련 문제