[MySQL] 데이터 형식 변환
데이터 형식변환 함수
CAST(expression AS 데이터형식 [(길이)]) |
1) 평균 구매 개수를 구하는 쿼리문이 있다. 구매개수를 정수로 출력하시오
USE cookDB; SELECT AVG(amount) AS '평균 구매 개수' FROM buyTBL; |
먼저 쿼리문을 돌려보았다.
![](https://blog.kakaocdn.net/dn/dzEjsn/btq2OoYDAZX/p73f2ULXcs7gayfB5ElTkk/img.png)
CAST를 사용해서 정수 표현
SELECT CAST(AVG(amount) AS SIGNED INTEGER) AS '평균 구매 개수' FROM buyTBL ; |
CONVERT 사용해서 정수표현
SELECT CONVERT(AVG(amount), SIGNED INTEGER) AS '평균 구매 개수' FROM buyTBL; |
출력결과
![](https://blog.kakaocdn.net/dn/bzPukO/btq2Ma1Uewj/yGlPQuUdIkxjOM8gXMVai1/img.png)
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); |
![](https://blog.kakaocdn.net/dn/Vsy5S/btq2Nzfj9QX/1LiUYIXW6vXxgZ4jOdugrk/img.png)
![](https://blog.kakaocdn.net/dn/bZFzK3/btq2QUiwSh2/aco6w34GkWtfxAGVaCkCK0/img.png)
암시적 형 변환
CAST(), CONVERT() 사용하지 않고 데이터 형식 변환
암시적 형 변환의 예
SELECT '100' + '200';
문자와 문자를 더함(정수로 변환한 후 처리)
![](https://blog.kakaocdn.net/dn/IzAo0/btq2QVuZgL7/qZMVKwg96teN7nMKGYCOR1/img.png)
SELECT CONCAT('100', '200');
문자와 문자를 연결(문자열 그대로 처리)
![](https://blog.kakaocdn.net/dn/cBQBnk/btq2OpwvpWa/KD1binkYkjnF5dztReplMK/img.png)
SELECT CONCAT(100, '200');
정수와 문자를 연결(정수를 문자로 변환하여 처리)
CONCAT은 문자열을 연결하는 함수이므로 정수가 문자열로 변한다.
![](https://blog.kakaocdn.net/dn/yxGuh/btq2N13xEpT/oTKoJGBisnOI25wbJFOV80/img.png)
SELECT 1 > '3mega';
정수인 3으로 변환한 후 비교
비교 연산자로 인해 '3mega' 문자열이 숫자 3으로 변경됨. 즉 1>3 을 처리함 : 결과는 0 (False)
![](https://blog.kakaocdn.net/dn/kMfVH/btq2MpLiYIB/kv8aukAgmecgylqN2vwJv0/img.png)
SELECT 4 > '3MEGA';
정수인 3으로 변환한 후 비교
비교 연산자로 인해 '3MEGA' 문자열이 숫자 3으로 변경됨. 즉 4>3 을 처리함 : 결과는 1 (True)
![](https://blog.kakaocdn.net/dn/cG0cxQ/btq2QTYeDDN/Rk1rOFmWO4hOnk3gW1Ke3K/img.png)
SELECT 0 = 'mega3';
문자가 0으로 변환됨
앞에 m 이 들어간 문자열이 숫자로 변경되면 그냥 0이 된다 즉 0 = 0 을 처리했으므로 결과는 1
![](https://blog.kakaocdn.net/dn/YMokE/btq2NE8AWHb/OIy6PboIEVhP8a1jZEFzL0/img.png)