DataBase

[MySQL] 형변환 CAST 함수 / CONVERT 함수 사용 방법

토발자 2023. 4. 18. 22:19
반응형

MySQL에서 쿼리를 사용하다 보면 형변환이 필요할 때가 있다.

데이터 타입이 CHAR인 컬럼을 조회할 때 숫자 타입으로 바꿔서 조회하는 것이 필요한 경우가 있다.

 

특히 숫자로 이뤄진 컬럼인 줄 알고 정렬을 했는데

1, 11 111, 2, 23, 234, 33, ... 이렇게 정렬되는 경우가 있다.

아마 컬럼의 타입이 INT가 아니라 VARCHAR이기 때문일 것이다.

 

이때 MySQL에서는

  • CAST 함수
  • CONVERT 함수

둘 중 하나를 사용해 데이터 형변환을 할 수 있다.

 

변환 가능한 데이터 형식은 다음과 같다.

  • BINARY[(N)]
  • CHAR[(N)] [charset_info]
  • DATE
  • DATETIME
  • DECIMAL[(M[,D])]
  • JSON
  • NCHAR[(N)]
  • SIGNED [INTEGER]
  • TIME
  • UNSIGNED [INTEGER]

 

간단하게 사용 방법을 알아보면 다음과 같다.


1. CAST(값 AS 데이터형식)

SELECT * FROM USERS ORDER BY CAST(USER_ID AS UNSIGNED);

// 문자에서 숫자로 변환
SELECT CAST('123' AS UNSIGNED) AS test;
SELECT CAST('123' AS UNSIGNED) FROM DUAL;

// 숫자에서 문자로 변환
SELECT CAST(2 AS char(1)) AS test;
SELECT CAST(123 AS CHAR(3)) FROM DUAL;

// 문자 또는 숫자를 날짜 타입으로 변환
SELECT CAST(20230418 AS DATE) FROM DUAL; // 2023-04-18
SELECT CAST('20230418' AS DATE) FROM DUAL; // 2023-04-18

2. CONVERT(값, 데이터형식[길이])

// 숫자를 문자열로 변환
SELECT CONVERT(202304180950, CHAR); // "202304180950"

// 숫자를 날짜 타입으로 변환
SELECT CONVERT(20230418, DATE); // 2023-04-18

// SIGNED 타입으로 변환
SELECT CONVERT(NOW(), SIGNED); // 20230418135712
반응형