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        

 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를 쓰는 이유는 보너스처럼 십의 자리에 숫자가 생길 상황에 대비하기 위함이다.
보고서 형식에서 가장 대중적으로 사용되는 방식이다.

|| '%':
마지막에 문자 연결 기호(||)를 써서 숫자 뒤에 %라는 글자를 딱 붙여주는 단계이다