DB

[MySQL] CONVERT 함수와 CAST 차이점 비교

인생아 2025. 7. 25. 12:30
반응형

MySQL에서 데이터 타입을 변환하는 대표적인 함수는 CAST()와 CONVERT()이다. 이 두 함수는 기본적으로 동일한 기능을 제공하지만, 문법과 확장 기능에 차이가 있다. 특히 CONVERT()는 문자셋 변경에도 사용되기 때문에 두 함수의 차이점을 명확히 이해하고 상황에 맞게 선택하는 것이 중요하다.

공통점: 형 변환 함수

둘 다 SQL 표준에 기반한 형 변환 함수로, 다양한 데이터 타입 간의 명시적 변환을 수행한다.

CAST 함수 문법

CAST(값 AS 데이터타입)

예:

SELECT CAST(123.45 AS CHAR) AS 문자;
-- 결과: '123.45'

CONVERT 함수 문법

CONVERT(값, 데이터타입)

예:

SELECT CONVERT(123.45, CHAR) AS 문자;
-- 결과: '123.45'

문법만 다를 뿐, 기본적인 동작은 동일하다.

반응형

주요 차이점 정리

항목 CAST CONVERT
SQL 표준 O O
문법 CAST(expr AS type) CONVERT(expr, type)
문자셋 변경 불가능 가능 (CONVERT(str USING charset))
가독성 더 명확 함수형 스타일
확장성 고정된 용도 문자셋 변환까지 가능

예제 1: 같은 결과

SELECT CAST(1234 AS CHAR) AS cast_result,
       CONVERT(1234, CHAR) AS convert_result;

결과는 동일하게 '1234'로 출력된다.

예제 2: 문자셋 변환 (CONVERT 전용)

SELECT CONVERT('안녕하세요' USING utf8mb4);

이건 CAST()로는 할 수 없다. CONVERT()는 문자열의 인코딩을 명시적으로 지정할 수 있어 문자셋 처리에 강력하다.

예제 3: 날짜 포맷 변환

SELECT 
  CAST('2025-07-22' AS DATE) AS cast_date,
  CONVERT('2025-07-22', DATE) AS convert_date;

둘 다 결과는 동일하게 날짜로 변환된다.

언제 CAST? 언제 CONVERT?

문자셋 변환이 필요한 경우 → CONVERT(str USING charset)
SQL 표준 스타일이 필요한 경우 → CAST()
직관적인 함수 스타일을 선호한다면 → CONVERT()

실제로 성능이나 결과 차이는 거의 없기 때문에, 문법 스타일과 가독성, 특수 기능(문자셋)을 기준으로 선택하면 된다.

정리

  • CAST()와 CONVERT()는 대부분의 형 변환에서 동일한 역할을 한다.
  • 문법은 다르지만 결과는 거의 같으며, 성능 차이도 없다.
  • CONVERT()는 문자셋 변환이 가능한 유일한 선택지이다.
  • 실무에서는 문자셋 처리, 데이터 포맷 일관성 확보를 위해 상황별로 적절히 선택하는 것이 중요하다.

참고 문서

https://dev.mysql.com/doc/refman/8.0/en/cast-functions.html
https://dev.mysql.com/doc/refman/8.0/en/charset-convert.html

 

반응형