반응형
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
반응형
'DB' 카테고리의 다른 글
| [MySQL] PASSWORD와 OLD_PASSWORD 함수 완전 해부 (0) | 2025.07.25 |
|---|---|
| [MySQL] 숫자, 날짜, 문자형 자유 변환 꿀팁 모음 (3) | 2025.07.25 |
| [MySQL] 날짜 → 문자열 변환: DATE_FORMAT 응용하기 🗓️ (2) | 2025.07.25 |
| [MySQL] 문자열 → 날짜 변환: STR_TO_DATE 실전 예제 📆 (1) | 2025.07.25 |
| [MySQL] CAST 함수로 데이터 형 변환하기 (0) | 2025.07.25 |
| [MySQL] CASE WHEN으로 다중 조건 처리하기 (1) | 2025.07.25 |
| [MySQL] NULLIF로 두 값 비교 후 조건 처리하기 (3) | 2025.07.25 |
| [MySQL] IFNULL로 NULL 값을 기본값으로 대체하기 (0) | 2025.07.25 |