SQL에서 데이터를 다룰 때 가장 중요한 개념 중 하나가 데이터 타입(Data Type)입니다.
데이터 타입이 다르면 연산이 불가능하거나 오류가 발생할 수 있기 때문에,
서로 다른 데이터 타입을 변환하는 방법을 알아두는 것이 중요합니다.
이번 글에서는 날짜, 문자, 숫자 등의 변환 함수를 예제와 함께 쉽게 설명하겠습니다! 😊
🔹 1. 데이터 타입(Data Type)이란?
📌 데이터 타입은 데이터가 어떤 형식으로 저장되는지를 정의합니다.
✅ 자주 사용하는 데이터 타입
데이터 타입 | 설명 |
VARCHAR2(n) | 가변 길이 문자열 (최대 n 바이트) |
CHAR(n) | 고정 길이 문자열 (최대 n 바이트) |
NUMBER(p,s) | 숫자 (p: 전체 자릿수, s: 소수점 이하 자릿수) |
DATE | 날짜와 시간 (YYYY-MM-DD HH:MI:SS) |
TIMESTAMP | 날짜와 시간 + 밀리초 |
CLOB | 긴 문자 데이터 (텍스트 저장) |
✔ 서로 다른 데이터 타입을 변환할 때 TO_DATE(), TO_CHAR(), CAST(), CONVERT() 같은 함수를 사용합니다.
🔹 2. 문자열을 날짜로 변환: TO_DATE()
📌 TO_DATE() 함수는 문자열을 날짜 형식(YYYY-MM-DD)으로 변환할 때 사용합니다.
✅ 문법
TO_DATE(문자열, '포맷')
✅ 예제: 문자열을 날짜로 변환
SELECT TO_DATE('2024-03-15', 'YYYY-MM-DD') AS result FROM dual;
✔ '2024-03-15' 문자열이 DATE 타입으로 변환됨
✅ 다양한 날짜 형식 변환
SELECT
TO_DATE('15-03-2024', 'DD-MM-YYYY') AS date1,
TO_DATE('20240315', 'YYYYMMDD') AS date2,
TO_DATE('03/15/2024', 'MM/DD/YYYY') AS date3
FROM dual;
✔ 입력 문자열의 형식에 맞게 변환해야 오류 없이 실행됨
🔹 3. 날짜를 문자열로 변환: TO_CHAR()
📌 TO_CHAR() 함수는 날짜 또는 숫자를 문자열로 변환할 때 사용합니다.
✅ 문법
TO_CHAR(날짜 또는 숫자, '포맷')
✅ 예제: 날짜를 문자열로 변환
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') AS now FROM dual;
✔ SYSDATE(현재 날짜)를 'YYYY-MM-DD HH24:MI:SS' 형식의 문자열로 변환
✅ 날짜를 다양한 형식으로 변환
SELECT
TO_CHAR(SYSDATE, 'YYYY/MM/DD') AS format1,
TO_CHAR(SYSDATE, 'MM-DD-YYYY') AS format2,
TO_CHAR(SYSDATE, 'YYYY"년" MM"월" DD"일"') AS format3
FROM dual;
✔ 원하는 형식으로 출력 형태를 조정할 수 있음
✅ 숫자를 문자열로 변환
SELECT TO_CHAR(1234567, '9,999,999') AS formatted_number FROM dual;
✔ 숫자 1,234,567을 천 단위 구분 기호(,) 포함하여 문자열로 변환
🔹 4. 데이터 타입 변환: CAST()
📌 CAST() 함수는 데이터 타입을 변환할 때 사용됩니다.
✔ 날짜 → 문자열, 숫자 → 문자열 등 다양한 변환이 가능
✅ 문법
CAST(값 AS 데이터타입)
✅ 예제: 숫자를 문자로 변환
SELECT CAST(100 AS VARCHAR2(10)) AS text_value FROM dual;
✔ 숫자 100이 문자열 '100'으로 변환됨
✅ 문자열을 숫자로 변환
SELECT CAST('1234' AS NUMBER) + 10 AS result FROM dual;
✔ '1234'를 NUMBER로 변환 후 +10 연산 수행 (결과: 1244)
✅ 날짜를 문자열로 변환 (TO_CHAR()와 동일)
SELECT CAST(SYSDATE AS VARCHAR2(20)) AS date_text FROM dual;
✔ 현재 날짜를 문자열로 변환 (TO_CHAR(SYSDATE, 'YYYY-MM-DD')과 유사)
🔹 5. 데이터 타입 변환: CONVERT()
📌 CONVERT() 함수는 문자의 인코딩(캐릭터셋) 변환을 수행합니다.
✔ 예를 들어, UTF8 → AL32UTF8 변환
✅ 문법
CONVERT(문자열, 새로운 문자셋)
✅ 예제: 문자셋 변환
SELECT CONVERT('안녕하세요', 'AL32UTF8') AS converted_text FROM dual;
✔ CONVERT()는 주로 다국어 환경에서 문자 인코딩 변환 시 사용
🔹 6. 데이터 타입 변환 정리
함수 | 설명 | 예제 |
TO_DATE() | 문자열 → 날짜 변환 | TO_DATE('2024-03-15', 'YYYY-MM-DD') |
TO_CHAR() | 날짜/숫자 → 문자열 변환 | TO_CHAR(SYSDATE, 'YYYY-MM-DD') |
CAST() | 데이터 타입 변환 | CAST(100 AS VARCHAR2(10)) |
CONVERT() | 문자 인코딩 변환 | CONVERT('안녕하세요', 'AL32UTF8') |
✔ TO_DATE()와 TO_CHAR()는 날짜 변환
✔ CAST()는 다양한 데이터 타입 변환
✔ CONVERT()는 문자셋 변환
🔹 7. 실전 연습 문제
다음 SQL을 직접 작성해보세요!
1️⃣ '20240315'를 DATE 타입으로 변환하는 SQL 작성
2️⃣ 현재 날짜를 'YYYY년 MM월 DD일' 형식의 문자열로 변환하는 SQL 작성
3️⃣ 숫자 '98765'를 천 단위 구분 기호(,)가 포함된 문자열로 변환하는 SQL 작성
4️⃣ 문자열 '500'을 숫자로 변환 후 100을 더하는 SQL 작성
정답을 댓글로 남겨주세요! 😊✨
👉 SQL 데이터 변환을 직접 사용해보면서 익혀보세요! 🚀
'개발 > SQL' 카테고리의 다른 글
CASE 문으로 데이터 변환: 동적 값 변환과 그룹핑 (4) | 2025.03.20 |
---|---|
LEAD & LAG 함수 사용법: 이전/다음 행 참조하기 (2) | 2025.03.19 |
윈도우 함수(Window Function) 기초: RANK(), DENSE_RANK(), ROW_NUMBER() (2) | 2025.03.18 |
서브쿼리(Subquery) 활용법: EXISTS, IN, ANY, ALL (6) | 2025.03.17 |
JOIN 종류 정리: INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN 비교 (0) | 2025.03.16 |