본문 바로가기

IT Data 분석

[MySQL] 콤마가 포함된 텍스트 타입 컬럼을 숫자형 컬럼으로 변경하기 / 가격 데이터를 숫자 데이터로 변경하기

728x90

풀려고 한 문제 : raw data에서 ,가 포함된 가격 형태

1. 처음에 import 할 때는 text 형태로 import

2. 가격 컬럼의 데이터타입을 int로 바꾸고 싶다 

1) 가격에서 , 제거 

2) 가격 컬럼 데이터타입을 int로 변경하기

(추출할 때마다 convert, cast 해주는 방법도 있겠지만 귀찮을 것 같음) 

 

#가격에서 , 제거
update 테이블명 set 컬럼명 = replace( 컬럼명, ',' , '')


#가격에 NULL값이 있는 경우에 0원으로 처리하고 싶은 경우 
update 테이블명
set 컬럼명 = '0' where trim(coalesce(컬럼명, '')) = '';

#coalesce -> IFNULL이랑 비슷함. 그런데 여러개 인수를 사용가능함. 

#가격에 NULL값으로 되어있진 않은데 비어있는 경우에 0원으로 처리하고 싶은 경우
update 테이블명 
set 테이블명 = '0' where trim(컬럼명) = '';

#바뀐 가격 컬럼을 int형으로 만들기 
ALTER TABLE 테이블명    
MODIFY COLUMN 컬럼명 데이터타입

 

참고) COALESCE함수 

- COALESCE 함수는 처음으로 NULL이 아닌 컬럼 값을 만나면 그 컬럼 값을 리턴.

- 컬럼1이 NULL이 아니면 컬럼1을 리턴. 컬럼1이 NULL이고 컬럼2가 NULL이 아니면 컬럼2를 리턴.. 컬럼1부터 컬럼 n-1까지 데이터가 NULL이면 컬럼N값을 리턴!

 

참고한 글 

https://stackoverflow.com/questions/21784201/mysql-convert-column-datatype-from-varchar-to-int