문자형 데이터를 정수형 데이터로 변경하거나, 정수형 데이터를 문자형 데이터로 변환하는 등 데이터의 형식을 변환하는 것을 데이터 형 변환(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 |