2020.09.09 오라클 수업 정리 집에서 할것.

날짜 관련된 함수 


TO_CHAR 날짜 --> 문자 

TO_DATE 문자 ---> 날짜 



날짜 -> 문자 -> 날짜 

문자 -> 날짜 -> 문자 


NULL 관련 함수


1.  NVL (expr 1 , expr2 ) 


*만약 expr1 이 NULL이면 expr2를 출력

expr1이 null이 아니면 그대로 expr1을 출력한다. 

: 간단하게 말하면 1이 null이면 2출력

                       1이 null이 아니면 1을 출력 


NULL과 관련된 연산의 결과는 NULL이다. 

총 4가지 존재. 다 외우진 않아도 되지만 시험엔 나온다. 


2. NVL2( expr1, expr2, expr3 ) 

expr1이 NULL이면 expr3 를 출력한다

expr1이 NULL이 아니면 expr2 를 출력한다. 



comm 컬럼이 NULL일때 0 으로 변경하여 SAL컬럼과 합계를 구한다. 

SELECT empno, ename, sal, comm, 

    sal + NVL(comm, 0 )  nvl_sum, 

    sal + NVL2(comm, comm, 0 ), 

   NVL2( comm, sal+comm sal ) nvl2_sum2, 

   NULLIF(sal, sal) nullif, 

   NULLIF(sal, 5000 ) nullif_sal,

   sal + COALESCE(comm, 0 ) coalesce_sum


FROM emp; 



3. NULLIF(expr1, expr2 ) 

   1자리숫자와 2자리숫자가 같으면 NULL이고 

   1자리 숫자와 2자리 숫자가 다르면 1을 출력한다. 



4. coalesce(expr1, expr2, expr3 ....) coalesce 의 인자중 가장 처음으로 등장하는

NULL이 아닌 인자를 반환 

expr1이 NULL이면 다음으로 넘어가서 다시 coalesce 를 하고

expr1이 NULL이 아니면 expr1(자기자신을 반환한다. 


expr1이 null이면 다음을 넘어가서 coalesce를 다시 하는데 

그래서 coalesce ( expr2, expr 3 ...) 

예시 


coalesce(null, null, 5, 4 ) 

첫번째로 1자리가 null이면 다음으로 넘어간다 

---------> coalesce(null, 5, 4)

첫번째 1자리가 NULL이면 버리고 다음으로 넘어간다. 

----------------> coalesce(5, 4) 

첫번째 숫자가 null이면 다음으로 넘어가고 

null이 아니면 첫번째 숫자를 반환한다

------------------> 5가 나온다 . 

 


여기서 주의할 점은 expr 2까지면 expr3나 그 뒤는 없는것으로 생각하지 않는다. 


조건 CONDITION 

SQL 에서는 CASE 절


* CASE 절은 그냥 COLUMN 같아서 쉼표를 치고 써줘야 한다. 

CASE 

   WHEN 조건 THEN 반환할 문장 

  WHEN 조건2 THEN 반환할 문장 

  ELSE 반환할 문장 

END (별칭써줄수 있다. 


emp 테이블에서 job 컬럼의 값이 


' SALESMAN' 이면 sal 값에 5%를 인상한 급여를 반환 sal * 1.05 

' MANAGER' 이면 SAL 값에 10 % 를 인상한 급여를 반환 SAL * 1.10 

'FRESIDENT' 이면 SAL 값에 20 % 를 인상한 급여를 반환 SAL * 1.20

그 밖의 직군 ( 'CLERK', 'ANALYST')은 SAL값 그대로 반환 



SELECT ename, job, sal, 
         
      CASE 
     WHEN job = 'SALESMAN' THEN sal * 1.05
     WHEN job = 'MANAGER' THEN sal * 1.10 
     WHEN job = ' PRESIDENT' THEN sal * 1.20 

     ELSE sal 

   END sal_b
 
FROM emp; 


가변인자 : 


DECODE ( column  | exprl, 

               search 1, return 1 , 

               search 2, return 2, 

               search 3, return 3, 

              default ) 


첫 번째 컬럼이 두번째 컬럼(search1 ) 과 같으면 세번째 컬럼을 리턴 




   































댓글