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 |
출력 결과
'전체 > Oracle' 카테고리의 다른 글
ORACLE 날짜 함수(MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY, LAST_DAY, TO_DATE) 활용, DECODE, CASE 문 사용 (0) | 2017.06.12 |
---|---|
ORACLE DUAL, 문자처리 함수(UPPER, LOWER, INITCAP, INSTR, SUBSTR, LPAD, RPAD, LTRIM, RTRIM) 정리 (0) | 2017.06.12 |
ORACLE 산술, 비교, 논리, 기타 연산자 정리 AND,OR,NOT,BETWEEN,IN,LIKE (0) | 2017.06.12 |
ORACLE INDEX (0) | 2017.06.12 |
ORACLE VIEW (0) | 2017.06.12 |