반응형
MySQL에서는 데이터 타입이 혼합되어 있을 때 오류 없이 처리하기 위해 명시적 타입 변환이 필요하다. 이럴 때 CAST()와 CONVERT() 함수를 활용하면 원하는 타입으로 정확히 변환할 수 있다.

🔹 CAST(): 표준 SQL 방식의 형 변환
문법
CAST(value AS data_type)
- data_type에는 INT, CHAR, DECIMAL, DATE 등 다양한 타입 가능
- 표준 SQL 문법으로 가독성과 이식성 높음
예제
SELECT CAST('123' AS UNSIGNED); -- 문자열을 정수로: 123
SELECT CAST(3.1415 AS CHAR); -- 숫자를 문자열로: '3.1415'
SELECT CAST('2024-01-01' AS DATE); -- 문자열을 날짜로: 2024-01-01
활용
-- 문자열 금액을 정수로 변환해서 더하기
SELECT SUM(CAST(price AS UNSIGNED)) FROM product_table;
반응형
🔸 CONVERT(): MySQL 확장 방식의 형 변환
문법
CONVERT(value, data_type)
- 기능은 CAST()와 같지만 MySQL 전용 구문
- 문자셋 변환도 가능 (예: CONVERT(value USING utf8mb4))
예제
SELECT CONVERT('456.78', DECIMAL(10,2)); -- 결과: 456.78
SELECT CONVERT(789 USING utf8mb4); -- 문자셋 변환
활용
-- 문자열로 저장된 수치를 숫자형으로 바꿔 계산
SELECT item_name, CONVERT(sale_price, UNSIGNED) * 1.1 AS vat_price
FROM item_list;
🧠 두 함수 비교 요약
| 항목 | CAST() | CONVERT() |
| 문법 | CAST(value AS type) | CONVERT(value, type) |
| 표준 여부 | O (표준 SQL) | X (MySQL 전용) |
| 문자셋 변환 | X | O (USING charset) |
| 실무 활용도 | 널리 사용됨 | 문자셋 또는 숫자 변환용으로 자주 사용 |
⚠️ 실무 팁
- 형 변환 시 오류가 발생하지 않도록 변환 대상이 유효한 값인지 확인하는 로직이 필요하다.
- CAST()는 이식성이 높아 다양한 DBMS에서도 동일하게 사용 가능하다.
- CONVERT()는 문자셋 처리 시 더 유리하며, 특정 문자열 인코딩 변경이 필요할 때 사용한다.
💡 실무 예제 조합
문자열 숫자 연산
SELECT name, CAST(salary AS DECIMAL(10,2)) * 1.05 AS bonus
FROM employee;
문자셋 변경 예시
SELECT CONVERT(column_name USING utf8mb4)
FROM legacy_table;
🔗 참고 공식 문서
https://dev.mysql.com/doc/refman/8.0/en/cast-functions.html
반응형
'DB' 카테고리의 다른 글
| [MySQL] DATE_FORMAT, TIME_FORMAT 사용법 완전 정복 📅 (1) | 2025.07.22 |
|---|---|
| [MySQL] DATE, TIME, YEAR 등 날짜/시간 추출 함수 모음 (0) | 2025.07.22 |
| [MySQL] NOW와 CURDATE로 현재 날짜/시간 구하기 🕒 (0) | 2025.07.22 |
| [MySQL] 실무에서 자주 쓰는 숫자 함수 조합 예제 모음 (2) | 2025.07.22 |
| [MySQL] 숫자 포맷 함수: FORMAT, TRUNCATE 차이와 사용법 (0) | 2025.07.22 |
| [MySQL] 수학 계산 함수: SQRT, POW, LOG, EXP 정리 (0) | 2025.07.22 |
| [MySQL] 난수 생성 함수: RAND, UUID 실무 활용법 (0) | 2025.07.22 |
| [MySQL] 나머지와 정수 나눗셈 함수: MOD, DIV 실전 가이드 (0) | 2025.07.22 |