공부/Oracle

ORACLE DB :: NULL 처리 (NVL( ),NVL2( ), COALESCE( ))

린구 2022. 3. 3. 21:34
반응형

2월 18일 배운 것 정리

 

 

 

컬럼 구조의 추가 및 제거

 

컬럼 구조의 추가 및 제거를 할 때에는 ALTER 를 사용한다.

 

ALTER TABLE TBL_EMP
ADD SSN CHAR(13);

SSN 컬럼을 추가하고 있다.

 

 

--○ 다시 SSN 컬럼 구조적으로 제거

ALTER TABLE TBL_EMP
DROP COLUMN SSN;
--==>> Table TBL_EMP이(가) 변경되었습니다.

 

 

 

※ NULL 처리

 

 

SELECT NULL, NULL+2, 10-NULL, NULL*2, 2/NULL
FROM DUAL;
--==>> (NULL) (NULL) (NULL) (NULL)

 

 

NULL 은 상태의 값을 의미하며, 물리적으로는 실제 존재하지 않는 값이기 때문에

연산에 NULL 값이 포함될 경우, 그 결과는 무조건 NULL 이 나온다.

 

 

SELECT ENAME, JOB, SAL, COMM
FROM TBL_EMP
WHERE COMM IS NULL;

 

NULL 인 값을 검색하기 위해서는 IS NULL 을 사용한다.

→ NULL 은 실제 존재하는 값이 아니기 때문에 일반적인 연산자를 활용하여 비교할 수 없다.

 

 

 

 

○ NVL( )

 

 

→ 첫 번째 파라미터 값이 NULL 이면, 두 번째 파라미터 값을 반환한다.

→ 첫 번째 파라미터 값이 NULL 이 아니면, 그 값을 그대로 반환한다.

 

 

SELECT ENAME "사원명", NVL(COMM, 0) "수당"
FROM TBL_EMP;

 

COMM 이 NULL 값이라면 0을 반환하고, NULL 이 아니라면 COMM 값을 반환하는 것.

 

 

 

 

○ NVL2( )

 

 

→ 첫 번째 파라미터 값이 NULL 이 아닌 경우, 두 번째 파라미터 값을 반환하고

    첫 번째 파라미터 값이 NULL 인 경우, 세 번째 파라미터 값을 반환한다.

 

 

SELECT ENAME "사원명", NVL2(COMM, '청기올려', '백기올려') "수당확인"
FROM TBL_EMP;
--==>>
/*
SMITH	백기올려
ALLEN	청기올려
WARD	청기올려
JONES	백기올려
		:
        */

 

 

 

 

○ COALESCE( )

 

→ 매개변수 제한이 없는 형태로 인지하고 활용한다.

→ 맨 앞에 있는 매개변수부터 차례로 NULL 인지 아닌지 확인하여

    NULL 이 아닐 경우 반환하고,

    NULL 인 경우에는 그 다음 매개변수의 값을 반환한다.

 

    NVL( ) 이나 NVL( )2 와 비교하여 모든 경우의 수를 고려할 수 있다는 특징을 갖는다.

 

 

SELECT NULL "COL1"
            , COALESCE(NULL, NULL, NULL, 30) "COL2"
            , COALESCE(NULL, NULL, NULL, NULL, NULL, NULL, NULL, 100) "COL3"
            , COALESCE(NULL, 10, NULL, NULL, NULL, NULL, NULL, 100) "COL4"
FROM DUAL;
--==>> (null) 	30 	100	  10

 

NULL 아닌 값이 나올 때까지 값을 반환하는 것 !

 

 

반응형