2013-08-27 4 views
0

나는 우편 번호 열이있는 MySQL 데이터베이스를 가지고 있습니다. 일부 우편 번호는 5 자리 숫자이고 일부는 9 자리 숫자입니다. 필드가 9자인 경우 다섯 번째와 여섯 번째 문자 사이에 하이픈을 삽입해야합니다.MySQL : 문자열에 하이픈을 삽입하십시오.

55555은 55555

999999999는 PHP와 반향 때 99999-9999

내가 가능성을 추가 할 수 있습니다하게 남아 있지만 난 그냥 우편 번호 컬럼의 데이터에 하이픈을 추가 할 수 있다면보다 효율적인 것 데이터베이스에.

나는이 문제에 접근하는 방법을 놓치고 있습니다. MySQL 쿼리 도움말에 대한 제안은 크게 감사하겠습니다.

+1

'CONCAT (SUBSTR (zip, 1, 5), '-', SUBSTR (zip, 6))'...? – deceze

답변

3

이 업데이트 쿼리를 사용할 수 있습니다

UPDATE yourtable 
SET 
    zip = CONCAT_WS('-', SUBSTR(zip, 1, 5), SUBSTR(zip, 6)) 
WHERE 
    LENGTH(zip)=9 

이 바이올린 here를 참조하십시오.

+0

예! 정확하게. 논리를 둘러싼 내 머리를 감싸고 있지는 못했습니다. concat은 완벽하게 이해할 수 있으며, concat_ws에 대해 배우게되어 기쁩니다. 고맙습니다. – Chester

0
<?php 
$result = mysqli_query($link, "SELECT zipcode, id FROM table"); 
while($row = mysqli_fetch_assoc($result) { 
    if(strlen($row['zipcode']) > 5) { 
     $first_part = substr($row['zipcode'],0,5); 
     $second_part = substr($row['zipcode'],5,9); 
     $zipcode = $first_part.'-'.$second_part; 
     $result2 = mysqli_query($link,"UPDATE table SET `zipcode` = $zipcode WHERE id = {$row['id']}"); 
    } 
} 

이것은 간단한 해결책이며 쿼리의 테이블 이름을 조정해야합니다. 당신이 값을 업데이트해야하는 경우

+0

다른 유용한 대안. 감사! – Chester

관련 문제