개요
MySQL은 비교나 검색을 수행할 때 데이터 타입이 다른 경우 내부적으로 같은 타입으로 변환하여 처리한다. 또 사용자가 명시적으로 데이터 타입을 변환할 수 있도록 연산자와 함수를 제공하고 있다.
CAST
인수로 전달받은 값을 지정한 데이터 타입으로 변환한다. 변환할 타입은 AS 절로 명시하며, 사용할 수 있는 타입은 BINARY, CHAR, DATE, DATETIME, TIME, DECIMAL, JSON (MySQL 5.7.8 이상), NCHAR, SIGNED [INTEGER], UNSIGNED [INTEGER]이다.
CAST(expr AS type)
예시 )
SELECT 4 / 2,
4 / '2',
4 / CAST('2' AS UNSIGNED);
# 실행 결과
| 4 / 2 | 4 / '2' | 4 / CAST('2' AS UNSIGNED) |
| ------ | ------- | ------------------------- |
| 2.0000 | 2 | 2.0000 |
4를 2로 나눈 결과는 실수 2.0이다. 하지만 4를 문자열 2로 나눈 결과는 정수 2로 계산된다. 이를 숫자형 데이터끼리의 연산과 동일하게 하기 위해서는 문자열 2를 숫자형으로 변환하여 계산해야 한다.
CONVERT
인수로 전달받은 값을 지정한 데이터 타입으로 변환한다. 첫번쨰 인수에 변환할 데이터를, 두 번째 인수에 변환할 타입을 전달하며 USING절을 사용하면 데이터의 인코딩을 변환한다.
CONVERT(expr, type)
CONVERT(expr USING transcoding_name)
예시 )
SELECT 4 / 2,
4 / '2',
4 / CONVERT('2', UNSIGNED);
# 실행 결과
| 4 / 2 | 4 / '2' | 4 / CONVERT('2', UNSIGNED) |
| ------ | ------- | -------------------------- |
| 2.0000 | 2 | 2.0000 |
참고 문서
http://www.tcpschool.com/mysql/mysql_operator_typeCasting
https://ponyozzang.tistory.com/653