반응형

- 변환 함수

-- 숫자 -> 문자 변환
-- 콤마 예제
SELECT TO_CHAR(12345678,'999,999,999') comma FROM DUAL;

-- 소숫점 예제  
SELECT TO_CHAR(123.45678,'999,999,999.99') period FROM DUAL; 

-- $ 표시 예제
SELECT TO_CHAR(12345678,'$999,999,999') dollar  FROM DUAL;

-- Local 화폐 표시 예제 (한국의 경우 ₩로 자동 변환 됨)
SELECT TO_CHAR(12345678,'L999,999,999') local  FROM DUAL;

-- 왼쪽에 0을 삽입
SELECT TO_CHAR(123,'09999') zero FROM DUAL;  

-- 16진수로 변환
SELECT TO_CHAR(123,'XXXX') hexadecimal  FROM DUAL;


-- 날짜 -> 문자 변환

-- 년,월,일,시,분,초 예제
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') "sysdate"
FROM DUAL;

-- 365일 중 몇 일째인지 조회
SELECT TO_CHAR(SYSDATE, 'DDD') "Day of year" FROM DUAL;

-- 53주 중 몇 주차 인지 조회
SELECT TO_CHAR(SYSDATE, 'IW') "Week of year" FROM DUAL;

-- 해당 월의 이름 조회
SELECT TO_CHAR(SYSDATE, 'MONTH') "Name of month" FROM DUAL;

-- DATE 타입으로 변환하는 예제
SELECT TO_DATE('2011-01-01','RRRR-MM-DD') FROM DUAL;


-- 문자형 -> 날짜 변환
select * from sawon where sahire >= to_date('2000-1-1 13:00:22','YYYY-MM-DD HH24:MI:SS')
-- 여기서 문자형을 날짜로 변환해주는 이유는 날짜와 날짜의 값을 비교하기 위해서 변경했다.

 

 

 

- 숫자형 함수

 

trunc 간단 정리표

TRUNC함수
자릿수
의미
결과
TRUNC
(12.3456, 3)
3
소숫점 아래 셋째 자리까지 표시
12.345
TRUNC
(12.3456, 2)
2
소숫점 아래 둘째 자리까지 표시
12.34
TRUNC
(12.3456, 1)
1
소숫점 아래 첫째 자리까지 표시
12.3
TRUNC
(12.3456, 0)
0
1의 자리까지 표시
12
TRUNC
(12.3456, -1)
-1
10(10¹)의 자리까지 표시
10
TRUNC
(123.456, -2)
-2
100(10²)의 자리까지 표시
100
TRUNC
(1234.56, -3)
-3
1000(10³)의 자리까지 표시
1000

 

floor, mod

round, trunc

 

 

-  문자형 함수

 

concat(문자열결합)

 

substr(문자열추출)

 

 

- 날짜 함수

-- add_months
select sysdate 입대날짜, add_months(sysdate,18) 제대날짜 from dual;
select sysdate 제대날짜, add_months(sysdate,-18) 입대날짜 from dual;
select months_between(add_months(sysdate,5),sysdate) from dual;

 

 

 

http://gurubee.net/lecture/1028

 

DECODE와 CASE

DECODE와 CASE 함수는 SQL 문장에서 조건에 해당하는 값을 추출하고자 할 때 주로 사용한다 DECODE - DECODE 함수는 조건에 따라 데이터를 다..

www.gurubee.net

위 사이트를 참고하여 공부하고, 작성했습니다.

 

 

- DECODE 함수

 

decode(필드, 값1, 결과1, 
             값2, 결과2, 
             값3, 결과3, 기본값)
           12345678901234 <- position  
gojumin = '760815-1325467'

select 
   gobun, goname, goaddr, gojumin,
   -- 주민번호로 성별코드 구해서 숫자로 변환 2로 나눈 결과 이용해서 성별 구분
   decode( mod(to_number(substr(gojumin,8,1)),2) , 1 , '남자', '여자' ) as gogender
from gogek

select * from gogek

 

 

 

 

 

- CASE

 

- 조건문을 달아서 case문을 만들 수 있다.

- 현재 받는 봉급 sal을 기준으로 조건문을 만들어서 인상급여가 책정된다.

★case문
형식1)
   case 필드(수식)
       when 값1 then 결과1	   
       when 값2 then 결과2
       else 기본값
end

형식2)
   case
       when 조건1 then 결과1
       when 조건2 then 결과2
       else 기본값
end

-- 성별
select gobun, goname, gojumin,
   case mod( to_number(substr(gojumin,8,1)),2 )
       when 0 then '여자'
       else '남자'
   end as gogender1,

   case
       when mod(to_number(substr(gojumin,8,1)),2) = 0 then '여자'
       else '남자'
   end as gogender2
from gogek

-- 계절
           12345678901234 <- position  
gojumin = '760815-1325467'
-- 형식 2를 이용
select gobun, goname, gojumin,
   to_number(substr(gojumin,3,2)) as 출생월,
   case
        when to_number(substr(gojumin,3,2)) between 3 and 5 then '봄'
        when to_number(substr(gojumin,3,2)) between 6 and 8 then '여름'
        when to_number(substr(gojumin,3,2)) between 9 and 11 then '가을'
        else '겨울'
   end as "고객님의 출생월"
from gogek

-- 형식 1을 이용
select gobun, goname, gojumin,
   to_number(substr(gojumin,3,2)) as 출생월,
   case floor(to_number(substr(gojumin,3,2))/3)
        when 1 then '봄'
        when 2 then '여름'
        when 3 then '가을'
        else '겨울'
   end as "고객님의 출생월"
from gogek

 

-- 사원테이블에서 입사월 및 계절
-- 형식1
select
   s.*,
   to_number(to_char(sahire,'MM')) as 입사월,
   case
       floor(to_number(to_char(sahire,'MM'))/3)
       when 1 then '봄'
       when 2 then '여름'
       when 3 then '가을'
       else '겨울'
   end as "고객님의 출생월"
from (select * from sawon) s
-- 형식2
select sabun, saname, sahire,
   to_number(to_char(sahire,'MM')) as 입사월,
   case

       when to_number(to_char(sahire,'MM')) between 3 and 5 then '봄'
       when to_number(to_char(sahire,'MM')) between 6 and 8 then '여름'
       when to_number(to_char(sahire,'MM')) between 9 and 11 then '가을'
       else '겨울'
   end as "고객님의 출생월"
from sawon

 

반응형