특정 데이터 타입을 다른 데이터 타입으로 변환한다.
Format
CAST(expr AS datatype);
Example
SELECT CONCAT('Date: ', CAST(NOW() AS DATE));
먼저 NOW()의 return값은 DATETIME 타입이다. 이걸 DATE 타입으로 CAST 했으니, DATE로만 바꾸고 TIME은 버리겠다는 의미이다.
그리고, 이것의 출력물은 맥락상 문자형/숫자형으로 결정되는데, CONCAT이 Str+Str 이니까 문자형으로 바꿔준다.
SELECT TEAM_ID, ZIP_CODE1, ZIP_CODE2,
CONCAT(ZIP_CODE1, '-', ZIP_CODE2) AS 우편번호,
CAST(ZIP_CODE1 AS UNSIGNED) + CAST(ZIP_CODE2 AS UNSIGNED)
AS 우편번호합
FROM TEAM;
만약 CONCAT(ZIP_CODE1, '-', ZIP_CODE2)가 에러없이 출력된다면, ZIP_CODE1과 ZIP_CODE2가 문자열이라는걸 알 수 있다.
CAST(ZIP_CODE1 AS UNSIGNED)는 정수로 변환하라는 뜻이다.
CAST()와 표현만 다르다.
Format
CONVERT(expr, datatype);
Example
SELECT CONVERT(NOW(), DATE); /* DATETIME을 DATE로 변환 */
두 함수에서 변환할 데이터 타입으로 아래 타입만 허용한다.
- 숫자형
- SIGNED [INTEGER], UNSIGNED [INTEGER]
- REAL, DOUBLE, FLOAT, DECIMAL- 문자형
- CHAR, CHAR(n)- 이진 문자형
- BINARY, BINARY(n)- 날짜형
- DATE, TIME, DATETIME