반응형
- 변환 함수
-- 숫자 -> 문자 변환
-- 콤마 예제
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
반응형
'데이터베이스↗' 카테고리의 다른 글
데이터베이스 서브쿼리 (0) | 2024.05.23 |
---|---|
데이터베이스 뷰 View (0) | 2024.05.23 |
데이터베이스 타입 변환 (0) | 2024.05.22 |
데이터베이스 데이터조작어(DML) (1) | 2024.05.22 |
데이터베이스 테이블 제약조건 (1) | 2024.05.21 |