변환함수
- 데이터 유형 : 문자형, 숫자형, 날짜형
- 데이터 유형의 변환
1. 암시적 형변환 : 오라클이 알아서 데이터 유형을 변환시키는 것
2. 명시적 형변환
- to_char 함수 : 숫자나 날짜를 문자형으로 형변환시키는 함수
select to_char(sysdate, 'day') from dual;
|
- 문자형으로 변환할 때 사용되는 날짜 포맷
- YYYY : 숫자로 된 전체 연도
- YEAR : 영어 철자로 표기된 연도
- MM : 월의 2자리 값
- MONTH : 전체 월 이름
- MON : 월의 3자 약어
- DY : 3문자로 된 요일 약어
- DAY : 요일의 전체 이름
- DD : 숫자 형식의 월간 일
- to_number 함수 : 숫자형으로 형변환하는 함수
- to_date 함수 : 날짜형으로 형변환하는 함수
- to_char 로 숫자를 문자로 변환하기 : 5600은 5,600으로 바꾸려면 숫자를 문자로 형변환 해야 한다.
select to_char(sal,'999,999') from emp;
|
- 9는 숫자를 나타내는데, 0부터 9까지 이 자리에 어떠한 숫자가 와도 상관없다.
- 9 : 숫자를 나타낸다.
- 0 : 0이 표시되도록 강제로 적용
- $ : 부동 달러 기호 배치
- L : 부동 로컬 통화 기호 사용
- . : 소수점 출력
- , : 천 단위 표시자로 심표 출력
- to_date 를 이용하여 날짜 데이터를 검색
- ex) 81년 12월 11일에 입사한 사월들의 이름과 입사일을 출력하는 방법
select ename, hiredate
from emp
where hiredate = to_date('81/12/11', 'RR/MM/DD');
|
- 날짜를 검색할 때는 to_date 를 사용하는 것이 좋다.
함수중첩
합수는 중첩해서 사용할 수 있다.
ex) 오늘부터 100달 뒤에 돌아오는 월요일의 날짜를 출력한다.
select next_day(add_months(sysdate, 100), '월요일')
from dual;
|
일반함수
- nvl 함수 : null value 의 약자로 null 값 대신에 다른 값을 출력하고자 할 때 사용한다.
- nvl2 함수 :
ex) 이름, 월급, 커미션, 월급+커미션을 출력한다
select ename, sal, comm, nvl2(comm, sal+comm, sal)
from emp;
|
- comm 이 null 이 아니면 sal+comm 을 출력하고, comm 이 null 이면 sal 을 출력한다
- nullif 함수 : 두 값이 같으면 null 을 출력하고, 두 값이 다르면 첫번째 값을 출력하는 함수
select first_name, length(first_name) as "first name",
last_name, length(last_name) as "last name",
nullif (length(first_name), length(last_name)) as "nullif"
from employees;
|
- coalesce 함수 : 두 값이 모두 null 일 때 특정 값을 출력하는 함수
select ename, comm, mgr,
coalesce (to_char(comm), to_char(mgr), 'no comm and no mgr')
from emp;
|
- decode 함수 : SQL 로 if - then - else 문을 구현할 수 있는 함수이다. 파생변수 생성 시 중요한 함수.
ex) 이름, 부서번호, 보너스를 출력하는데, 부서번호가 10이면 보너스를 4000을 출력하고, 부서번호가 20이면 3000을, 나머지 부서번호는 0을 출력한다.
select ename, deptno, decode(deptno, 10, 4000, 20, 3000, 0) "보너스"
from emp;
|
- case 문 : decode 는 equal (등호, = ) 비교만 가능하고 부등호 비교는 case 문을 사용한다.