CAST 의 사용법

CAST(원래 데이터 AS 변환할데이터타입) 형태로 사용할 수 있습니다.

1
2
3
4
SELECT CAST(col1 AS INTEGER) FROM tbl_1  // 정수형으로 변환
SELECT CAST(col2 AS CHAR) FROM tbl_1     // 문자형으로 변환
SELECT CAST(col3 AS DECIMAL) FROM tbl_1  // 숫자형(소수점까지)으로 변환
...

위 예시 외에도 다양한 형태로 변환할 수 있습니다.

  • BINARY : 이진 데이터
  • CHAR : 문자열(문자형)
  • DATE : 날짜(연월일)
  • DATETIME : 날짜(연월일 시분초)
  • TIME : 시간
  • DECIMAL : 숫자형(소수점까지)
  • JSON : JSON 형태
  • NCHAR : 문자열(문자형), 글자수 기준
  • SIGNED [INTEGER] : 부호가 있는 정수
  • UNSIGNED [INTEGER] : 부호가 없는 정수(양의 정수)



사용 예시

이전 포스트에서 들었던 예시를 가져와보겠습니다.

이전 포스트 : 최대 최소값 max min

column 타입은 문자형이지만, 안에 들어있는 값은 숫자형인 경우들이 있습니다.
이 때 숫자간의 대소를 비교해야한다면?

CAST AS 구문을 사용할 수 있습니다.
CAST AS 구문으로 문자형인 데이터를 숫자형으로 변환하여 비교하는 것이죠.

예시 데이터

name subject score
김철수 영어 85
이철수 수학 120
남궁철수 물리 100
베르나르철수 문학 95

table : std_score name : varchar(20)
subject : varchar(20)
score : varchar(20)

먼저, 문자형인 숫자를 변환 없이 비교할 경우입니다.

1
2
SELECT max(score) FROM std_score;
>>> 95

분명 최대 점수인 120점이 나와야 할 것 같은데.. 95점이라니!
이는 score 컬럼이 varchar 즉, 문자형이기 때문입니다.
따라서 정렬상 가장 마지막에 있는 95점이 반환되는 것이죠.

이번엔 CAST AS를 통해 숫자로 변환한 뒤 비교해보겠습니다.

1
2
SELECT max(CAST(score AS INTEGER)) FROM std_score;
>>> 120

문자형인 score 컬럼의 값들을 INTEGER로 변환(CAST) 한 뒤 비교하기 때문에, 숫자 중 최대값인 120이 반환되는 것을 볼 수 있습니다.



Reference

Tags: ,

Categories:

Updated: