728x90

Oracle의 TO_CHAR() 함수는 날짜(Date)나 숫자(Number) 데이터를 문자열로 변환할 수 있는 강력한 형변환 함수입니다. 이 글에서는 TO_CHAR 함수의 기본 구조, 날짜 및 숫자 포맷 사용법, 실무 예제, 주의사항 등을 상세하게 설명합니다.
1. TO_CHAR 함수란?
TO_CHAR(expr, format) 구조로 사용되며, expr는 날짜나 숫자 타입의 표현식입니다. format은 출력될 문자열의 형식을 정의합니다.
2. 날짜(Date) 포맷 예제
예제 1: 기본 날짜 출력
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') AS today FROM dual;
결과 예시: 2025-06-03
예제 2: 요일 및 시간 표시
SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD DY HH24:MI:SS') FROM dual;
주요 날짜 포맷 기호
- YYYY: 연도 (4자리)
- MM: 월 (2자리)
- DD: 일 (2자리)
- HH24: 시간 (24시간제)
- MI: 분
- SS: 초
- DY: 요일 축약형 (예: TUE)
3. 숫자(Number) 포맷 예제
예제 3: 천 단위 구분 쉼표 추가
SELECT TO_CHAR(1234567.89, '9,999,999.99') FROM dual;
결과: 1,234,567.89
예제 4: 통화 기호 붙이기
SELECT TO_CHAR(1000, '$9,999') FROM dual;
결과: $1,000
숫자 포맷 기호 정리
- 9: 숫자 자리 표시 (0은 생략 가능)
- 0: 숫자 자리 표시 (0으로 채움)
- ,: 천 단위 구분 기호
- .: 소수점 구분자
- $: 통화 기호
- L: 로컬 통화 기호
4. 날짜와 숫자 함께 포맷팅
예제 5: 결제 내역 로그
SELECT '결제 일시: ' || TO_CHAR(payment_date, 'YYYY-MM-DD HH24:MI:SS') ||
' 금액: ' || TO_CHAR(amount, '9,999,999') || '원'
FROM payment_log;
5. 실무 활용 팁
- 보고서 출력 시 TO_CHAR를 사용하면 가독성 높은 데이터 제공 가능
- TO_DATE와 함께 활용 시 입력 → 출력 전체 포맷 제어 가능
- 단, WHERE 조건문에서는 포맷된 문자열로 비교하지 않도록 주의
6. 자주 발생하는 오류와 주의사항
- 포맷 문자열이 잘못되면 ORA-01821 오류 발생 가능
- 숫자 포맷 시 전체 자릿수를 고려하지 않으면 '#' 출력 발생
- 날짜 데이터는 NLS 설정 영향을 받을 수 있음
7. 요약 및 결론
TO_CHAR() 함수는 Oracle에서 날짜와 숫자 데이터를 문자열로 변환하는 데 핵심적인 역할을 합니다. 다양한 포맷 옵션을 숙지하고 상황에 맞는 포맷을 적용함으로써 SQL 쿼리의 출력 품질과 가독성을 크게 향상할 수 있습니다.
8. 참고자료
- Oracle 공식 문서: https://docs.oracle.com
- Oracle SQL Language Reference 21c
- 실무 SQL 포맷팅 가이드 by PL/SQL 전문가 협회
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] ADD_MONTHS()로 손쉬운 월 단위 날짜 계산 구현하기 (0) | 2025.06.05 |
|---|---|
| [ORACLE] TO_TIMESTAMP()로 문자열을 타임 스탬프로 변환하는 방법 (0) | 2025.06.05 |
| [ORACLE] TO_DATE() 함수로 문자열을 날짜로 변환하는 가장 쉬운 방법 (0) | 2025.06.04 |
| [ORACLE] SYSTIMESTAMP()로 타임 존 포함 현재 시각 가져오는 방법 (0) | 2025.06.04 |
| [ORACLE] CURRENT_TIMESTAMP() 함수로 정확한 현재 시간 가져오기 (0) | 2025.06.04 |