Infra & Security Eng/Database Engineering
단일 행 함수 - 변환 함수 개념, 특징, 예제
엔지니어 E
2026. 2. 4. 12:52
반응형

변환 함수 개념과 특징
| 변환 함수 (Conversion Function) 데이터의 '타입'을 강제로 바꿔주는 함수 TO_CHAR: 숫자나 날짜를 **문자(String)**로 바꿔줌 (출력 모양을 예쁘게 만들 때 사용) TO_NUMBER: 문자를 숫자로 바꿔줌 TO_DATE: 문자를 날짜로 바꿔줌 |
| 참고사항 TO_CHAR 쓰는 이유: 1) 포맷 형식을 맞춰 주기 위해 2) 잘못 표기되는것을 예방 가능함 TO_DATE: 컴퓨터가 알아볼 수 있도록 하기 위해 |
변환 함수 날짜 시간 형식
| 형식 | 의미 | 형식 | 의미 | ||
| 년 | YYYY | 네 자리 년도: 2021, 1999 | 시 | HH24 | 01 ~ 24, 24시간 표현 |
| YY | 두 자리 년도: 99-2099 | HH | 01 ~ 12, 12시간 표현 | ||
| 두 자리 년도: 99-1000 | 분 | MI | ##, 분 | ||
| 월 | MM | 숫자: 01, 02 | |||
| MONTH | 문자: MARCH, APRIL, 3워, 4월 | 초 | SS | ##, 초 | |
| MON | 약자: MAR, APR, 3월, 4월 | SSSSSS | 하루를 초로 환산(0 ~ 86399) | ||
| 일 | DD | 숫자: 01,02 | 오전 오후 |
AM/PM | 오전, 오후 형식으로 의미 없음 |
| DAY | 요일: SUNDAY, 일요일 |
변함 함수 숫자 형식 (예시.TO_CHAR 함)
| 형식 | 의미 | 예시 코드 | 결과값 (출력) | 핵심 포인트 (비고) |
| 9 | 숫자 자리 지정 | TO_CHAR(123, '9999') | " 123" | 값이 없으면 공백으로 채움. (가장 많이 씀) |
| 0 | 선행 0 표기 | TO_CHAR(123, '0999') | " 0123" | 빈자리를 0으로 강제 채움. (학번, 순번 등) |
| $ | 달러 기호 | TO_CHAR(1234, '$9,999') | " $1,234" | 숫자 바로 앞에 $ 표시를 붙임. |
| L | 지역 화폐 | TO_CHAR(1234, 'L9,999') | " \1,234" | OS 설정에 따라 ₩, €, ¥ 등으로 자동 변환 국가 설정에 맞는 화폐 기호를 자동으로 붙여주는 역할 |
| , | 천 단위 쉼표 | TO_CHAR(1234567, '9,999,999') | " 1,234,567" | 보통 3자리마다 ,를 배치하여 가독성 향상. |
| . | 소수점 지정 | TO_CHAR(123.4, '999.00') | " 123.40" | 지정한 소수점 자리까지 표시 (빈자리는 0). |
| MI | 음수 기호 후행 | TO_CHAR(-123, '999MI') | "123-" | 마이너스(음수) 기호를 숫자 뒤에 붙임. 양수는 그냥 공백. |
| PR | 음수 괄호 표기 | TO_CHAR(-123, '999PR') | "<123>" | 음수를 화살괄호(<> )로 감쌈. (회계 장부용) |
| EEEE | 지수 표기법 | TO_CHAR(12345, '9.9EEEE') | " 1.2E+04" | 아주 큰 숫자를 과학적 표기법으로 압축함. |
| 코드 라인 | 형식(Format) 설명 | 의미 |
| 1번 라인 | 'YYYY/MM/DD' | 2026/02/04 (년/월/일만 깔끔하게) |
| 2번 라인 | 'HH24:MI:SS' | 14:05:30 (24시간 단위 시/분/초) |
| 3번 라인 | 'YY...AM' | 26/02/04...오후 (2자리 연도와 오전/오후) |
TO_CHAR를 이용한 날짜 검색 예제
오늘 날짜를 다양한 형식으로 검색 SQL> SELECT TO_CHAR(sysdate, 'YYYY/MM/DD') 날짜, 2 TO_CHAR(sysdate, 'YYYY/MM/DD:HH24:MI:SS') 날짜, 3 4 TO_CHAR(sysdate, 'YY/MM/DD:HH:MI:SS AM') 날짜 FROM dual; ![]() 숫자를 다양한 형식으로 검색 1. SQL> SELECT TO_CHAR(1234, 'L999,999') num FROM dual; ![]() 2. SQL> SELECT TO_CHAR(1234, 'L999,999') num FROM dual; ![]() |
TO_CHAR를 이용한 검색 예제
| 10번 부서 사원의 보너스가 급여의 몇 퍼센트 인지 검색한다 SELECT eno 사번, ename 이름, -- [3단계] 최종 출력할 컬럼 지정 및 별칭 부여 TO_CHAR(NVL(comm,0)/(sal*12)*100, '90.99')||'%' 급여_비율 -- [4단계] 데이터 가공(산술 연산, 포맷팅, 문자결합) FROM emp -- [1단계] 데이터를 가져올 대상 테이블 선정 WHERE dno='10'; -- [2단계] 조건에 맞는 행(10번 부서)만 필터링 |
| 해설 1. NVL(comm, 0) 보너스(comm) 값이 텅 비어있는(NULL) 데이터가 있으면 계산이 안 된다. 그래서 비어있는 칸을 일단 숫자 0으로 채워주는 단계이다. 2. sal * 12 한 달 월급(sal)을 1년치 연봉으로 바꾸기 위해 12를 곱하는 단계이다. 3. 나누기(/)와 곱하기 100 보너스 / 연봉을 하면 소수점(예: 0.05)이 나온다. 여기에 100을 곱해서 우리가 흔히 쓰는 백분율 숫자(5)로 만드는 단계이다. 4. TO_CHAR(..., '90.99')와 || '%' 계산된 숫자를 소수점 둘째 자리까지 형식을 맞추고(90.99), 마지막에 % 기호를 붙여 최종 결과물을 완성하는 단계이다. |
TO_DATE 함수를 이용한 검색 예제
| 1992년 이전에 입사한 사원의 정보를 검색한다 SQL> SELECT eno 사번, ename 이름, hdate 입사일 2 FROM emp 3 WHERE hdate < TO_DATE('19920101','YYYYMMDD'); ![]() SELECT eno 사번, ename 이름, hdate 입사일 -- 1. eno, ename, hdate 컬럼을 '사번', '이름', '입사일'이라는 별칭으로 조회한다. FROM emp -- 2. emp(사원) 테이블로부터 데이터를 가져온다. WHERE hdate < TO_DATE('19920101', 'YYYYMMDD'); -- 3. 입사일이 1992년 1월 1일 이전(미만)인 사원만 필터링한다. * TO_DATE('19920101', 'YYYYMMDD'): 문자열 '19920101'을 데이터베이스가 날짜로 인식할 수 있도록 날짜형 데이터로 변환하는 작업이다. < (미만): 1992년 1월 1일은 포함되지 않으며, 1991년 12월 31일 입사자까지 결과에 나오게 된다. |
| 참고사항 TO_CHAR(NVL(comm,0) / (sal*12) * 100, '90.99') || '%' NVL(comm, 0): 보너스(comm) 값이 텅 비어있는(NULL) 데이터가 있으면 계산이 안된다. 그래서 비어있는 칸을 일단 숫자 0으로 채워주는 단계이다 sal * 12: 한 달 월급(sal)을 1년치 연봉으로 바꾸기 위해 12를 곱하는 단계입니다. 나누기(/)와 곱하기 100: 보너스 / 연봉을 하면 소수점(예: 0.05)이 나온다 여기에 100을 곱해서 우리가 흔히 쓰는 **백분율 숫자(5)**로 만드는 단계이다 TO_CHAR(..., '90.99'): 숫자 포맷팅(Formatting) 정리 - 포맷의 목적 계산된 숫자를 출력할 때 보고서 형식에 맞춰 모양(포맷)을 잡아주는 단계이다. - 9와 0의 차이 * 9: 숫자가 있으면 보여주고, 없으면 비워두는 방식이다. *0: 숫자가 없어도 반든시 채우라는 명령어 이다. 이 차이 때문에 90.99와 00.99는 서로 다른 결과값을 출력하게 된다 - 소수점 및 자릿수 고정 * 소수점 뒤를 .99나 .00으로 지정하면 무조건 두 자리까지 출력된다. (예: 5.00) 이는 숫자가 작더라도 앞의 0이 사라지지 않게 고정하는 역할을 수행한다. - 90.99 형식을 쓰는 이유 * 0.99가 아닌 90.99를 쓰는 이유는 보너스처럼 십의 자리에 숫자가 생길 상황에 대비하기 위함이다. 보고서 형식에서 가장 대중적으로 사용되는 방식이다. || '%': 마지막에 문자 연결 기호(||)를 써서 숫자 뒤에 %라는 글자를 딱 붙여주는 단계이다 |



