MySQL 쿼리 질문 좀 드립니다.

Midabo   
   조회 3928   추천 0    

ALTER TABLE `db`.`table` CHANGE COLUMN `DIV_CD` `DIV_CD` INT NULL DEFAULT NULL ;


위 쿼리를 이용해서 DIV_CD 컬럼을 varchar(10) 에서 integer 로 바꾸려고 합니다.


1~5 사이의 숫자중 하나로 레코딩이 되어있는데, 간혹 들어있는 '-' 때문에 쿼리 에러가 나는데요


'-' 는 의미없는 데이터여서 null 처리해도 됩니다.


에러를 무시하고 컬럼 속성을 변경할 수 있는지요


짧은글 일수록 신중하게.
회원K 2016-02
update를 해서 '-'를 업애버린 후에, alter table을 하시는게 편할 것 같은데요?
여가시간 2016-02
아래구문 실행해서 '-' 제거후에 변경해보세요.
select replace(div_cd, '-', '') from `db`.`table`;
     
Midabo 2016-02
문제는 잠재적인 다른 char 값이 존재한다는 것인데요
레코드가 너무 많아서 일일이 찾기가 어렵습니다.

이경우 숫자가 아닌걸 숫자로 변경할 수 있을까요?
김동수P 2016-02
일단 db백업 하시고 (문제생기면 롤백해야하니...)

update `db`.`table` set `DIV_CD`=cast(`DIV_CD` as signed)  where 1=1

날리시면 숫자 아닌건 죄다 0으로 바뀌어서 들어갑니다. (data가 truncate 된다고 warning이 뜨긴 하는데, 걍 무시합니다)
그담에 필요에 따라 0인 항목을 null 로 변경 하시고... 그다음에 alter로 컬럼 타입 변경하세요.
     
Midabo 2016-02
엄지척!
감사합니다.
배병렬 2016-02
흠.. SQL 문의도 통하는 2CPU...
하드웨어 사이트인줄 알았더니... ^&^;;
박인호 2016-02
제가 여러 DB를 사용하다보니
MySQL에서도 정규표현식으로 replace가 되는 줄 알았는데 그렇게 안돼네요.
REGEXP를 이용해 문자가 포함된 예외 뽑아내
replace를 여러번 수행하는 것이 좋을 듯 합니다.


QnA
제목Page 2508/5704
2015-12   1656794   백메가
2014-05   5121458   정은준1
2016-02   4653   e5472
2016-02   11550   aga115
2016-02   3729   김건우
2016-02   3679   작은악마
2016-02   3929   Midabo
2016-02   9840   지나가는잡주
2016-02   10581   유호준
2016-02   6390   칸다리아
2016-02   5519   아카시아
2016-02   13832   무아
2016-02   4245   izegtob
2016-02   5959   PiPPuuP
2016-02   5050   노아
2016-02   4089   신은왜
2016-02   7126   김상민
2016-02   5672   권영현z
2016-02   9480   Kevin악동
2016-02   19662   총각
2016-02   4959   petabyte
2016-02   5871   최시영