[Oracle] 오라클 NULL 사용시 주의사항 정리

오라클에서 쿼리문을 작성할 때 NULL을 제대로 이해하지 않으면 원하는 결과가 출력되지 않을 때가 많다. 다른 DB나 언어와 다른 부분이 있으니 아래의 예제를 보면서 오라클에서 NULL 사용법을 조금이라도 이해하면 좋을 것이다.

 

오라클에서 빈 문자열( '' )은 NULL로 인식하기 때문에, 컬럼의 값이 빈 문자열이면 NULL과 동일한 조건으로 쿼리를 작성해야 한다.

 

[ 잘못된 사용 ]

① job = NULL (NULL은 비교 연산자를 사용할 수 없다) 
② job != NULL (NULL은 비교 연산자를 사용할 수 없다) 
③ job = '' (빈 문자열은 비교 연산자를 사용할 수 없다) 
④ sal + NULL (수치값에 NULL을 사칙연산하면 결과는 NULL 이다)

 

[ 올바른 사용 ]

① job IS NULL (NULL을 조건으로 사용할 때는 IS NULL을 사용한다)
② job IS NOT NULL (NULL을 조건으로 사용할 때는 IS NOT NULL을 사용한다)
③ job IS NULL (빈 문자열은 NULL을 사용한다)
④ sal + NVL(NULL, 0) (수치값 또는 컬럼은 NULL이 존재할 경우 NVL로 치환한다)

 

예제쿼리(테이블포함).txt
0.00MB

 

NULL 사용쿼리 예제

 

[ NULL 인 값을 찾을 때 ]

 

[ 문자열 비교 연산자 사용할 때 ]

-  job 컬럼을 NVL로 치환하지 않으면 job 컬럼이 NULL인 SCOTT는 조회되지 않는다.

 

-  같지  않다( !=, <> ) 연자산자를 사용시 NVL 함수로 치환하지 않고 LNNVL 함수나 OR을 사용하여 같은 결과를 얻을수 있다.

LNNVL( job = 'MANAGER' )

( job != 'MANAGER' OR job IS NULL )

 

[Oracle] 오라클 LNNVL 함수 사용법 쉽게 정리

 

[ IN 을 사용할 때 ]

 

[ 수치형 컬럼에 NULL이 존재할 때 ]

-  수치형 컬럼에 NULL이 존재할 경우 NVL로 치환하지 않으면 결과는 NULL로 출력 된다.

 

[ DECODE 함수를 사용할 때 ]

 

[ CASE 문을 사용할 때 ]

 

 

댓글

Designed by JB FACTORY