본문 바로가기
데이터베이스

MySQL 데이터 형 변환

by 승환파크 2023. 5. 25.

문자형 데이터를 정수형 데이터로 변경하거나, 정수형 데이터를 문자형 데이터로 변환하는 등 데이터의 형식을 변환하는 것을 데이터 형 변환(Type Conversion)이라고 한다.

형 변환에는 직접 함수를 사용해서 변환하는 명시적 변환(Explicit Conversion)과 별도의 지시 없이 자연스럽게 변환되는 암시적 변환(Imlicit Conversion)이 있다.

 

함수를 사용한 명시적 변환

데이터 형식을 변환하는 함수는 cast()와 convert() 로 총 두가지 방법이 있다.

 

작성 방식

cast(값 as 데이터_형식(길이))

convert(값, 데이터_형식(길이))

 

사용 예시

1. 실수형 을 정수형으로 변경하기

select avg(price) as "평균 가격" from buy;

# cast() 사용 방식
select cast(avg(price) as signed) as "평균 가격" from buy;
# convert() 사용 방식
select convert(avg(price), signed) as "평균 가격" from buy;

signed : 문자를 정수값으로 데이터 형 변환을 해주는 예약어 이다.

 

2. 문자열 데이터를 다양한 구분자를 사용하여 날짜형으로 변경하기

select cast('2023$02$04' as date);
select cast('2023/02/04' as date);
select cast('2023%02%04' as date);
select cast('2023@02@04' as date);

 

3. 결과를 원하는 형태로 표현하기

select num, concat(cast(price as char), 'X', cast(amount as char), '=') "가격X수량",
price * amount "구매액" from buy;

 

4. 결과를 원하는 형태로 표현하기2(길이 조절하기)

select num, concat(cast(price as char(2)), 'X', cast(amount as char(1)), '=') "가격X수량",
price * amount "구매액" from buy;

 

 

암시적 변환

cast()나 convert() 함수를 사용하지 않고 자연스럽게 데이터 형태가 변환되는 것을 암시적 변환이라고 한다.

select '100' + '200';

위의 sql 문장과 같이 문자는 덧셈이 불가능 하기 때문에 자동으로 숫자 100과 200으로 형 변환을 진행한 후 덧셈을 수행하여 값을 출력한다.

 

만약 문자 '100'과 문자'200'을 연결한 '100200'을 출력하고 싶다면 concat() 함수를 사용하는 것이 좋다.

select concat('100', '200');

 

만약 숫자 100과 문자 '200'을 더한다면 문자 '200'을 숫자 200으로 변환한 이후 덧셈을 계산하여 300을 출력한다.

select 100 + '200';

 

만약 숫자 100과 문자 '200'을 concat() 함수로 연결하면 숫자 100이 문자'100'으로 변환된 이후 연결된다.

select concat(100, '200');

'데이터베이스' 카테고리의 다른 글

MySQL 프로그래밍  (0) 2023.05.26
MySQL 스토어드 프로시저  (1) 2023.05.25
MySQL 변수  (1) 2023.05.25
MySQL 데이터 형식  (0) 2023.05.22
MySQL 데이터 삭제  (0) 2023.05.15