1. 함수종류

1) 문자형 함수: 문자를 입력받고 문자와 숫자 모두를 반환할 수 있다.
2) 숫자형 함수: 숫자를 입력받고 숫자를 반환
3) 날짜형 함수: 날짜형에 대해 수행하고 숫자를 반환하는 month_between을 제외하고

                     모두 날짜형(date)의 값을 반환한다.
4) 변환형 함수: 어떤 데이터형의 값을 다른 데이터 형으로 변환한다.
5) 기타. 일반적인 함수: NVL, DECODE

-------------------------------------------------------문자형 함수
(1) 변환함수: lower, upper, initcap
(2) 문자조작함수: concat,substr,length,lpad,rpad,ltrim,rtrim, replace
   
   -- lower : 대문자-->소문자로
   -- upper : 소문자-->대문자로
   -- initcap: 첫글자를 대문자로. 나머지는 소문자

   SELECT * FROM DUAL;
   SELECT 2*8 FROM DUAL;
   select lower('HAPPY BIRTHDAY') FROM DUAL;
   select upper('happy birthday') from dual;
   select deptno, dname, initcap(dname) from dept;


   -- concat : 두개 이상의 컬럼을 서로 연결시켜준다.
   select concat('abcd','가나다라') from dual;
   select 'abcd'||'efg' from dual;


   --문제1] emp테이블에서 '사원명 : 직업' 이 함께 출력되도록
   select concat(concat(ename,' : '),job) from emp;
   select ename||' : '||job from emp;


   --문제2] products테이블에서 출고가(output_price)와 '원'이 결합되어 출력
   select output_price, output_price||'원' "가격" from products;
  

   -- substr(변수, x,len)
   -- 문자 x로 시작한 len개 문자길이 만큼 변수를 반환
   -- 만약 x가 음수라면 문자는 끝에서 부터 시작하고 오른쪽부터 세어서 반환한다
   -- len이 없다면 디폴트로 전체를 의미


   select substr('880211-1023111',1,6) FROM dual;--880211
   --자바 String 의 substring("880211-1023111",1,6)--80211
   select substr('880211-1023111',-7) FROM dual;--1023111

   [문제3] emp테이블에서 첫글자가 'K'보다 크고 'Y'보다 작은
          사원의 이름, 업무, 급여를 출력하세요. 단 이름순으로 정렬하세요.
          --wgho순
   select ename,job,sal,substr(ename,1,1) from emp
   where substr(ename,1,1) >'K' and substr(ename,1,1)<'Y'
   order by ename asc;

  - lpad/rpad
   - 문자값을 왼쪽/오른쪽 부터 채운다.
   - lpad(컬럼, 변수1,변수2)
   select ename, lpad(ename,15,'*'), sal, lpad(sal,10,'-')
   from emp;
   select lpad((output_price||'원'),15,' ') "가격" from products;
   select rpad(dname,15,'*') from dept;
  
   - ltrim/rtrim
   - 왼쪽/오른쪽 공백을 제거할 때 사용
   - ltrim(변수1,변수2)
   select ltrim('tttHello test','t') from dual;--Hello test
   select rtrim('tttHello test','t') from dual;--tttHello tes
   select deptno,ename,job from emp;

   [문제] 사원(emp) 테이블에서 20번 부서의 사원에 대해 담당업무 중
          좌측에 'A'를 삭제하고, 급여중 우측의 0을 삭제하여 출력하세요.
          select deptno,job,ltrim(job,'A'),sal, rtrim(sal,0) from emp
          where deptno=20;
   
  - replace
   - 정해진 컬럼이나 이름에서 지정한 문자를 특정 문자로 변경하는 함수
   - replace(인수1,인수2,인수3)
   select replace('oracle test','test','hello') from dual;
   --oracle hello

   [문제] emp테이블에서 job 에 'A'를 '@'로 바꾸어 출력
             select job, replace(job,'A','@') from emp;
   [문제] member테이블에서 직업(job)이 학생인 정보를 모두 대학생으로 변경해 출력
             select job, replace(job,'학생','대학생') from member;
   [문제] 고객(member) 테이블에서 주소가 '서울시'로 되어 있는 회원들의
             주소를 모두 '서울특별시'로 변경하세요.
             select addr from member;
  

'..열심히 공부하세.. > 오라클' 카테고리의 다른 글

[01] 데이터베이스 개론  (0) 2012.05.08
오라클 기본  (0) 2011.06.21
쿼리문  (0) 2011.03.29
테이블  (0) 2011.03.29
PL/SQL  (0) 2011.03.29

+ Recent posts