-
day04_2 - 오라클 (데이터 형, to_char, to_date, nvl 함수, nvl2 함수, decode 함수)KIC/DB 오라클 2021. 6. 24. 01:35반응형
[오라클의 데이터 형]
[묵시적 자동 형변환]
select 1 + '1' from dual;
-> 숫자 1과 문자 1 계산 해서 2가 나왔다.
-> 문자를 숫자로 형변환 해서 계산
[MM/MON/MONTH]
-> MM: 월을 숫자 2자리로 표현 (04)
-> MON: 월을 뜻하는 영어 3글자로 표시 (OCT)
-> MONTH: 월을 뜻하는 영어 이름 전체를 표시 (OCTOBER/8월)
-> 한글로 설정한 경우 MON, MONTH 둘 다 월로 표시
[to_char]
-> 문자로 형변환 해주는 함수
-> 두번째 인자로 형식을 지정해줄 수 있다.
ex)
select name, to_char(hiredate,'yyyy-MM-dd') 입사일,
to_char((pay*12), '9,999,999') 연봉,
to_char((pay*12)*1.1, '9,999,999') 인상후
from professor
where to_char(hiredate, 'yyyy') < '2000';[문자사이에 콤마는 오류]
-> 문자 type에 콤마를 찍으면 오류가 난다
select '23,444' + 1 from dual; --오류
-> 숫자로 형변환 해서 하면 가능
select to_number('23,444', '999,999') + 1
[to_date]
-> date 형으로 형변환
select to_date('2012/01/01', 'yyyy:mm:dd')+ 1 from dual;
select to_date('2012/3월/01', 'yyyy:mon:dd') from dual;
select to_date('120301', 'yy:mm:dd') from dual;
[nvl 함수]
-> null 값을 만나면 다른 값으로 치환해서 출력하는 함수
select name, to_char(nvl(profno,0),'0999') "지도교수 번호"
from student;
-> null이였던 값이 0000으로 치환
[nvl2 함수]
-> 널이 아닐 때도 조건 추가
-- nvl2 -> nvl2 의 3번째 타일과 두번째 타일의 타입이 같아야 한다. -> 그래서 to_char(pay*12 + bonus, '999999')
select name, pay, bonus, nvl2(bonus, to_char(pay*12 + bonus, '999999'), '없음')
from professor;[decode 함수]
-> 오라클에만 있는 함수이다.
--ex)
select deptno,
count(decode(job, 'CLERK', 1)) clerk, -- 문자열은 대소문자 구분한다. 이름은 대문자다.
count(decode(job, 'MANAGER', 1)) manager,
count(decode(job, 'PRESIDENT', 1)) president,
count(decode(job, 'ANALYST', 1)) analyst,
count(decode(job, 'SALESMAN', 1)) salesman
from emp
group by deptno
order by 1; --deptno로 해도 가능300x250'KIC > DB 오라클' 카테고리의 다른 글