관리 메뉴

JIE0025

[MySQL] 데이터 형식 변환 본문

백엔드/데이터베이스

[MySQL] 데이터 형식 변환

Kangjieun11 2021. 4. 17. 15:36
728x90

 

데이터 형식변환 함수

CAST(expression AS 데이터형식 [(길이)])
CONVERT(expression, 데이터 형식 [(길이)])

 

 

1) 평균 구매 개수를 구하는 쿼리문이 있다. 구매개수를 정수로 출력하시오

USE cookDB;

SELECT AVG(amount) AS '평균 구매 개수' FROM buyTBL;

 

먼저 쿼리문을 돌려보았다.

 

 

 

 

 

CAST를 사용해서 정수 표현

SELECT CAST(AVG(amount) AS SIGNED INTEGER) AS '평균 구매 개수' FROM buyTBL ;

 

CONVERT 사용해서 정수표현

SELECT CONVERT(AVG(amount)SIGNED INTEGER) AS '평균 구매 개수' FROM buyTBL;

 

출력결과

 

 

 

 

 

2) CAST() 함수를 이용하여 날짜 형식 DATE, DATETIME 등 으로 변경

 

구분자 중 아무거나 사용하면 날짜 형식(-)으로 바꿀 수 있다.


/
%
@

SELECT CAST('2020$12$12' AS DATE);
SELECT CAST('2020/12/12' AS DATE);
SELECT CAST('2020%12%12' AS DATE);
SELECT CAST('2020@12@12' AS DATE);

 

 

 

 

 

암시적 형 변환

CAST(), CONVERT() 사용하지 않고 데이터 형식 변환 

 

 

암시적 형 변환의 예

 

SELECT '100' + '200';

문자와 문자를 더함(정수로 변환한 후 처리)

 

 

 

 

 

 

SELECT CONCAT('100', '200');

문자와 문자를 연결(문자열 그대로 처리)

 

 

 

 

 

 

SELECT CONCAT(100, '200');

정수와 문자를 연결(정수를 문자로 변환하여 처리)

CONCAT은 문자열을 연결하는 함수이므로 정수가 문자열로 변한다.

 

 

 

 

 

 

SELECT 1 > '3mega';

정수인 3으로 변환한 후 비교

비교 연산자로 인해 '3mega' 문자열이 숫자 3으로 변경됨. 즉 1>3 을 처리함 : 결과는 0 (False)

 

 

 

 

 

 

SELECT 4 > '3MEGA';

정수인 3으로 변환한 후 비교

비교 연산자로 인해 '3MEGA' 문자열이 숫자 3으로 변경됨. 즉 4>3 을 처리함 : 결과는 1 (True)

 

 

 

 

 

 

SELECT 0 = 'mega3';

문자가 0으로 변환됨

앞에 m 이 들어간 문자열이 숫자로 변경되면 그냥 0이 된다 즉 0 = 0 을 처리했으므로 결과는 1

 

 

 

 

 

 

'백엔드 > 데이터베이스' 카테고리의 다른 글

[MySQl]날짜/시간함수  (0) 2021.04.19
[MySQL] 내장 함수, 제어흐름 함수  (0) 2021.04.17
[MySQL] 변수 선언과 사용  (0) 2021.04.17
[MySQL] 데이터의 형식  (0) 2021.04.17
[MSSQL] LIKE 술어  (0) 2021.04.14