2010-01-13 4 views

답변

6

어떻게 이런 일에 대해 - 모든 것을 잘라내과 그것이 당신의 열의 값에 따라 달라집니다 있도록

UPDATE mytable 
SET addresscol=SUBSTRING(addresscol, LOCATE(' ', addresscol)+1) 
WHERE addresscol REGEXP '^[0-9]'; 
+0

은 특별한 경우 조심하십시오. 번지 수는 "15A"또는 "4968b"또는 "340-364"와 같은 추가 사항을 포함 할 수 있습니다. –

+0

이러한 특수한 경우는 주어진 접근 방식을 감추지 못할 것입니다. 그렇습니다. 이와 같은 접근 방법은 먼저 사용 가능한 데이터에서 테스트해야합니다! –

+0

멋진 접근 !! :) thanks – ufk

0

MySQL은 정규 표현식 기능을 대체하지 않는 번호로 시작하는 문자열의 첫 번째 공간을 포함한 . 문자열이 항상 숫자와 공백으로 시작하면 Paul Dixon이 게시 한 SQl 쿼리 (doh, 그는 나보다 빠릅니다 : D)를 사용하여 문자열을 시작할 수 있습니다.

정규 표현식이 문제를 해결하려면 데이터베이스 외부의 응용 프로그램 코드에서 수행해야합니다.

0

나는 이것이 각 항목에 집 주소에서 공백 ("")으로 구분 된 거리 주소가 있다는 근거로 작업을 수행해야한다고 생각합니다.

UPDATE table 
SET streetaddress = MID(streetaddress, LOCATE(' ', streetaddress) + 1); 

테스트 해봤는데 정상적으로 작동합니다.

업데이트 이전에 집 번호를 새 열로 추출하려면 다음을 사용할 수도 있습니다.

UPDATE table 
SET housenumber = MID(streetaddress, 1, LOCATE(' ', streetaddress) - 1); 
1

이 위 @ 폴 딕슨을 기반으로하지만, 단지 정렬 같은 것들에 대한 데이터를 업데이트하지 않고 결과를 돌려주기 위해서입니다 :

SELECT IF(address REGEXP '^[0-9]', SUBSTRING(address, LOCATE(' ', address)+1), address) AS addrSort FROM table; 
관련 문제