LIKE/%/ESCAPE/IS NULL/IS NOT NULL/ORDER BY/ASC/DISTINCT


NULL인 컬럼을 추출하는 연산자와 ORDER BY 절을 이용하여 특정 컬럼에 대해 정렬과 DISTINCT/별칭/연결 연산자



1. ESCAPE


ESCAPE는 %(퍼센트)나 _(언더바)가 같이 특수문자를 조건 안에 넣기 위해 사용한다.


만약 LIKE 연산자로 '%SAMPLE', 'SAM%PLE', 'SAMPLE%' 라는 단어를 찾을때 %나 _인 문자를 어떻게 찾을것인가?


SELECT *
  FROM EMP
 WHERE JOB LIKE 'S%'
  
SELECT *
  FROM EMP
 WHERE JOB LIKE '%S'
    
위와 같은 방식으로 찾기 어렵다는 한계 발견하였다.


다음과 같이 ESCAPE를 사용해 해당하는 단어를 추출할수 있다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
--테스트 위해 샘플 데이터 INSERT
 
SELECT * FROM DEPT
INSERT INTO DEPT VALUES(50,'MY','NEW_YORK')
INSERT INTO DEPT VALUES(60,'MY2','NEW%YORK')
 
 
--'_' 가 있는 문자 검색 -1
SELECT LOC
  FROM DEPT
 WHERE LOC LIKE '%#_%' ESCAPE '#'
 
 
--'_' 가 있는 문자 검색 -2
SELECT LOC
  FROM DEPT
 WHERE LOC LIKE '%N%@_%' ESCAPE '@' 
 
--'%' 가 있는 문자 검색 -1
     
SELECT LOC
  FROM DEPT
 WHERE LOC LIKE '%@%%' ESCAPE '@'
cs


2. IS NULL / IS NOT NULL


NVL


사용 방법 : NVL(expr, expr1)


NVL 함수는 NULL 값을 다른 값으로 바꿀 때 사용하며, 모든 데이터 타입에 적용이 가능하다.



1
2
3
4
5
6
SELECT EMPNO
     , ENAME
     , JOB
     , NVL(MGR,0) AS MGR --MGR이 없는 경우(NULL)
     , NVL(COMM,0) AS COMM --COMM이 없는 경우(NULL)
  FROM EMP
cs


NVL2


사용 방법 : NVL2(expr, expr1, expr2)


NVL2라는 함수는 NVL함수의 DECODE 함수의 개념을 합쳤다고 생각하면 쉽다.

expr의 값이 NULL이 아닐 경우에는 expr1의 값을 반환 하고, NULL일 경우에는 expr2의 값을 반환 한다.



1
2
3
4
5
6
SELECT EMPNO
     , NVL2(ENAME,ENAME,0) AS ENAME 
     , NVL2(JOB,JOB,0) AS JOB
     , NVL2(MGR,MGR,0) AS MGR
     , NVL2(COMM,COMM,0) AS COMM
  FROM EMP
cs


3. ORDER BY


컬럼 값을 기준으로 정렬할 때 사용한다.



1
2
3
4
5
6
7
SELECT *
  FROM EMP
 ORDER BY SAL -- 오름차순 정렬
  
SELECT *
  FROM EMP
 ORDER BY SAL DESC -- 내림차순 정렬
cs


4. DISTINCT


조회하려는 칼럼의 중복되는 값은 제거 후 보여준다.

DISTINCT 키워드 뒤에 2개 이상의 칼럼을 정의하면 하나의 RECORD로 인식하여 DISTINCT 키워드 이후에 오는 칼럼에 대해 모두 중복 제거한다.



1
2
SELECT DISTINCT JOB
  FROM EMP
cs

출력 결과



+ Recent posts