본문 바로가기

SQL

10. 변환함수(1)

- 데이터 타입(날짜,숫자,문자)을 변환하기 위해 사용

 

 to_char
** 사용법 : to_char(대상[, 포맷])
- 대상 : 날짜, 숫자

1. 숫자 -> 문자

case1) 단순 문자 타입 변경   
select nvl(to_char(comm),'보너스없음')
  from emp;



case2) 숫자 형태 변경
- 숫자 자리수 전달 시 9 또는 0 사용
- 9는 부족한 자리수를 공백으로, 0 사용 시 0으로 채움

ex) 1,000 $1000 1000.00
select sal, 
       to_char(sal,'99999'),  -- '  800'
       to_char(sal,'00000'),  -- 00800
       to_char(sal,'09999'),  -- 00800
       to_char(sal,'9,999')   -- 1,600
  from emp;

 

 

select sal, 
       to_char(sal, '$9999'),
       to_char(sal, '9999.99')
  from emp;
 

 

select sal, sal||'\'
  from emp;

 

select pay, 
       to_char(pay, '9,999'),  -- ######(원본보다 더 작은 자리수 전달 시 ####으로 출력됨)
       trim(to_char(pay, '9,999,999,999'))
  from emp2;

 

2. 날짜 -> 문자
- 날짜의 포맷 변경 또는 일부 추출 결과는 문자타입으로 리턴됨

** 날짜 포맷
- yyyy / yy : 연도
- rrrr / rr : 연도
- mm : 월
- dd : 일
- hh24, hh : 시간
- mi : 분
- ss : 초

- month / mon : 월(글자)
- day : 요일(글자)
- ddth, ddspth : 일자에 대한 서수식 표현

select sysdate,
       to_char(sysdate,'yyyy') as year1,
       to_char(sysdate,'yy') as year2,
       to_char(sysdate,'mm') as month,
       to_char(sysdate,'dd') as day
  from dual;

 

alter session set nls_date_language = 'american';


select sysdate,
       to_char(sysdate,'MONTH') as month1,
       to_char(sysdate,'mon') as month2,
       to_char(sysdate,'day') as 요일,
       to_char(sysdate,'ddth') as "일(서수)",
       to_char(sysdate,'ddspth') as "일(서수)"
  from dual;

 

예제) emp에서 각 직원의 이름, 부서번호, 입사일 출력
단, 입사일은 월-일-년 순서로 출력
select ename, deptno, hiredate, 
       to_char(hiredate, 'mm-dd-yyyy') as hiredate2
  from emp;

 

 

'SQL' 카테고리의 다른 글

12. 그룹함수(집계함수)  (1) 2024.10.18
11.변환함수(2)  (1) 2024.10.18
9. 날짜함수  (1) 2024.10.18
8. 일반함수(2), 숫자함수  (0) 2024.10.18
7. 일반함수(1)  (1) 2024.10.16