본문 바로가기
DB

오라클 : 문자 변환함수 TO_CHAR

by 스노위13 2022. 8. 12.

TO_CHAR는 숫자나 날짜 등의 데이터를 문자로 바꿔주는 변환함수로 특정한 형식으로 출력 결과를 내고 싶을 때 많이 사용한다. 

1. 날짜 데이터를 특정 형식으로 출력되게 하기

SELECT -- 연도만 나오게
        to_char(SYSDATE, 'YYYY') 
       --연도 월 일 시간 
       ,to_char(SYSDATE, 'YYYY MM DD HH:MI:SS') 
       --연도-월-일
       ,to_char(SYSDATE, 'YYYY-MM-DD')
       --연도월일
       ,to_char(SYSDATE, 'YYMMDD')       
       -- 날짜 
       ,to_char(SYSDATE, 'day') 
       -- 요일을 1~7 중 숫자로 반환
       ,to_char(SYSDATE, 'd') 
FROM dual;


위의 쿼리문은 아래와 같이 출력된다. 각각의 출력 결과를 보면 어떤 식으로 다른지를 알 수 있다.

이렇게 변환한 to_char는 사칙연산도 가능한데 이를 가지고 아래와 같이 활용할 수 있다.
문제 1 : 현재 일자를 기준으로 사원테이블(employees)의 입사일자를 참조해서 근속년수가 23년 이상인 사원을 출력하시오

위의 문제는 아래와 같이 풀이할 수 있다. 

SELECT employee_id
       ,emp_name
       ,hire_date
       ,to_char(SYSDATE, 'YYYY') - TO_char(hire_date,'YYYY') as 근속년수    
FROM employees
WHERE to_char(SYSDATE, 'YYYY') - TO_char(hire_date,'YYYY') >= 23 ;


이를 실행하면 아래와 같은 결과가 나온다.


문제 2 :
CUSTOMERS 테이블에서 CUST_YEAR_OF_BIRTH 를 활용하여 80년대 이후 출생자를 출력하시오. 

SELECT cust_name
       ,cust_year_of_birth
       ,to_char(SYSDATE, 'YYYY') - TO_char(cust_year_of_birth) as 나이
       ,cust_gender  
FROM customers
WHERE TO_char(cust_year_of_birth) >= 1980
order by 나이, cust_name ;

이를 실행하면 아래와 같은 결과가 나온다.


2. 숫자 데이터를 특정 형식으로 출력되게 하기

DB에서 금액 데이터를 가지고 올 때 to_char로 형식을 맞춰서 가져올 수도 있다. 

SELECT -- 금액이 나오게
        to_char(20600, '999,999')   || '원'
        ,to_char(245120600, '999,999,999')   || '원'
       -- 로마자로 변환        
       ,to_char(123, 'RN') 
FROM dual;


위의 쿼리문은 아래와 같이 출력된다.

댓글