◆ Null에 대한 처리 ◆

1. Null과 관련된 함수
   ㄱ. nvl 함수
     형식: select nvl(x, y)
        X값이 null일 경우 Y로 출력하고, null이 아닐 경우 X값 대로 출력하게함.


select nvl(null, -800), nvl(0, -800), nvl('이순신', '장군'), nvl(null, '장군') from dual;

 


select employee_id as "사원번호", first_name as "성", last_name as 명, salary 기본급, commission_pct as "수당 퍼센트1",
          nvl(commission_pct, 0) as "수당 퍼센트2",
          nvl(salary * commission_pct, 0) as "수당",
          (salary + nvl(salary * commission_pct, 0)) * 12 as "연봉"
from employees;

※ select에서 기입되는 컬럼명의 최종 출력 컬럼명을 별명처리로 위의 그림(예제2)처럼 바꿀수 있다.(as는 생략가능)
※ 다만 별명안에 공백이 있을 경우 "" 가 반드시 있어야 함
   권장 ex: select employee_id as "사원번호"
      ex: select employee_id "사원번호"
      ex: select employee_id 사원번호

 


   ㄴ. nvl2 함수
     형식: select nvl2(x, y, z)
        X값이 Null이면 Y값 출력, X값이 Null이 아니면 Z값 출력 

select nvl2(0, 100, 200), nvl2(null, 100, 200), nvl2('일', '이', '삼'), nvl2(null, '이', '삼') from dual;

 


   ㄷ. coalesce 함수
     형식: select coalesce(A, B, C, D)
        A가 Null이 아닐경우 A 출력,
        A가 Null일 경우, B 출력,
        B가 Null일 경우, C 출력,
        C가 Null일 경우, D 출력,
        D가 Null일 경우, Null 출력

 

select coalesce(0, 1, 2, 3),
          coalesce(null, 1, 2, 3),
          coalesce(null, null, 2, 3),
          coalesce(null, null, null, 3),
          coalesce(null, null, null, null)
from dual;

 

 

- where 절에서 null로 데이터를 구할때 = 연산자 대신 is 혹은 is not 으로 사용
  (null 이 존재하지 않는 데이터이기 때문에 = 연산자는 처리가 되지 않아 실행 불가)

 

select employee_id as "사원번호", first_name ||' ' ||last_name as "성명", salary as "급여", commission_pct as "커미션 퍼센트"
from employees
where commission_pct is null;   

 

 

select employee_id as "사원번호", first_name ||' ' ||last_name as "성명", salary as "급여", commission_pct as "커미션 퍼센트"
from employees
where commission_pct is not null;

 


- || (백스페이스키 왼편에 붙은 키를 쉬프트키를 누른상태에서 입력)
 결과물에서 여러개의 다른 컬럼을 한개의 컬럼으로 합하여 표시하고자 할때 사용.
 ||의 경우 2개 이상이 가능하므로 이것을 주로 사용.

 

 


select first_name ||' '||  last_name as "성명" from employees;

 


- concat: ||와는 다르게 2개의 컬럼까지만 가능

select concat('이순신의 입사일자는 ', sysdate) from dual;

 

 

select concat('이순신의 입사일자는 ', sysdate, ' 이고,') from dual;

 


- distinct: 결과물중 행 데이터가 동일할 경우 한개만 출력하는 명령

 

select distinct job_id, department_id from employees;

 

- 데이터 타입중 문자 및 날짜 타입은는 좌(왼)측 정렬

- 데이터 타입중 숫자 타입은 우(오른)측 정렬

 

 

◆ like 연산자 ◆

- like는 = 연산자와 비슷한 기능을 가짐.

select * from employees where job_id = 'AD_VP';

 

select * from employees where job_id like 'AD_VP';

 

- like연산자는 = 연산자와는 다르게 Wild Character 인 %, _를 사용하여 보다 구체적인 조건을 사용할 수 있다.
   - %: 글자가 있고 없고 관계없이 모든 글자를 뜻함

select job_id from employees where job_id like 'AD%';

 

    - _: 글자가 무엇이든 상관없이 1글자를 뜻함

select distinct job_id from employees where job_id like '___C%';

 


- escape: like 연산자를 사용할때 데이터내 % 문자가 와일드캐릭터로 인식되어 정확한 데이터 추출이 불가능할때 한글자 단위로 사용함
     (escape 사용할때 탈출 문자는 아무거나 가능하나 보통 \를 사용함)

 

 

select * from tbl_watch where bigo like '%99.99\%%' escape '\';

WRITTEN BY
빨강꼬마

,