DB

[MySQL] 숫자형 변환 함수: CAST, CONVERT로 타입 바꾸기

인생아 2025. 7. 22. 16:40
반응형

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

반응형