2011-02-07 2 views
0

하는 열을 갱신하는데 문제 I는 9 자리 숫자 또는 숫자 + 하이픈 수단MySQL은 : 조건

'123456789' 

'123-456-789' 

처럼 전화 번호를 포함하는 하나의 전화 필드 열을 갖는다.

'xxx-xxx-xxx' 형식으로 모든 레코드를 업데이트하는 SQL 쿼리를 만들고 싶습니다. 몇 가지 시도를했지만 정확한 해결책을 얻을 수 없습니다.

제발 도와주세요. 사전에 감사합니다 ..... 단지 하이픈 누락 된 행이는 WHERE phone not like '%-%'

+0

그래서 일부 레코드에는 이미 하이픈이 있지만 일부 레코드에는 하이픈이 있습니다. 그렇다면 하이픈이있을 때 올바른 형식으로 알려져 있습니까? 또는 123-456789와 같은 상황이 발생할 수 있습니까? – dmcnelis

+2

하이픈을 제거하는 것이 좋습니다. 디스플레이 지점에 추가 할 수는 있지만 저장할 필요가 없으므로 이러한 형식 불일치가 발생할 수 있습니다. 전화 번호 필드를 정수형으로 만들 것을 제안합니다. –

답변

2

사용 뭔가. 추가하기 전에 문자열에 '-'가 포함되어 있는지 먼저 테스트해야하지만 올바른 경로입니다.

UPDATE MYTABLE SET 전화 = CONCAT (SUBSTRING (휴대 전화, 1, 3), '-', SUBSTRING (휴대 전화, 4, 3), '-', SUBSTRING (휴대 전화,도 7,도 4)) INSTR (전화, '-') = 0;

+0

일부 레코드에는 1233-456-789가 포함되어 있습니다. 이는 123--456--789처럼 업데이트됩니다. –

0

닫기를 말을 얻을

또한
UPDATE mytable SET phone = 
CONCAT(SUBSTRING(phone, 1, 3),'-',SUBSTRING(phone, 4, 3),'-',SUBSTRING(phone, 7, 3)) 

같은