본문 바로가기
  • BLG-ZYNGIROK-모토-꿈꾸며-배우고-나누며-이루다
ICT/SQL

SQL 문법 | NULL에 대해서 | NULL NVL NVL2 COALESCE NULLIF

by dazwischen 2021. 9. 10. 20:30
반응형

본 포스트는 SQL의 NULL이란 데이터 타입에 대해 알아보고자 한다. NULL은 데이터가 없으면서도 있다. 자세히 살펴보자.

NULL

SQL 문법 NULL에 대해서 NULL NVL NVL2 COALESCE NULLIF

01 NULL이란?

NULL이란 조금은 독특한 데이터이다. 먼저 널에 대해서 언어적으로 살펴보자면, 독일어로 NULL은 숫자 0을 말한다. 하지만 컴퓨터 공학에서 NULL은 숫자 0으로 사용하지 않는다. 데이터를 입력받다 보면 0도 아니고 빈공간도 아닌 값을 표시해야할 상황들이 생긴다. ZYN의 뇌피셜로는 그런 상황을 표현하기 위해서 대부분의 사람은 이해하지 못할 독일어의 0을 차용한 것이 아닌가 생각한다. 이유가 어찌 되었던 이런 NULL이란 잡 이야기를 통해 우린 NULL에 대해 조금은 더 친숙해 졌다. 이제 조금은 SQL적으로 설명을 해보겠다.

-NULL은 0이 아니다.

-NULL은 빈공간이 아니다.

-NULL은 이 둘도 아닌데 '데이터가 없음' 또는 '데이터 아직 미정'을 나타내는 데이터이다.

-따라서 NULL 또한 데이터이다.

02 NULL의 특성

NULL은 SQL 처리에서 조금은 특별한 성격을 갖고 있다.

  • NULL은 함수 연산에서 제외된다.

COUNT, SUM, AVG와 같은 함수 연산 중에 NULL 데이터가 있으면 제외하고 계산한다. NULL을 0으로라도 연산하고 싶으면 NVL 함수(아래 참고)를 이용해야 한다. 

  • NULL과의 연산값은 NULL이다.

NULL과의 연산은 무조건 NULL 값을 리턴한다. 위와의 차이점은 함수를 통한 연산이 아닐 경우를 말하는 것이다.

NULL 함수 연산 NULL 값을 연산
NULL 값은 제외됨 결과 값은 NULL

03 NULL을 처리하는 함수

데이터를 조회 및 처리 할 때 NULL값을 어떻게 다룰지 정할 수 있다. 0으로 보던지 특정 데인터 형태로 표현해줄지. 그것들을 도와주는 함수들에 대해서 알아보자.

  • NVL(TARGET-DATA, WANTED-VALUE)

다루는 컬럼명을 TARGET-DATA 자리에 넣어주고 조회중 NULL이 나오면 WANTED-VALUE로 변환해주는 함수이다.

NVL(COL1, 0)
;

NVL(COL2, 1)
;

위의 예에서 첫 번째의 경우는 합산할 경우에 많이 써준다. 두번째의 경우는 NULL인 값의 갯수를 샐 경우에 많이 이용한다.

  • NVL2(TARGET-DATA, WANTED-VALUE1, WANTED-VALUE2)

다루는 칼럼명을 TARGET-DATE 자리에 넣어주고 조회한 데이터가 NULL이 아닐 경우 WANTED-VALUE1을 반환 NULL일 경우 WANTED-VALUE2을 반환한다.

NVL2(COL1, 1, 0)
;
  • COALESCE(TARGET-DATA, WANTED-VALUE)

다루는 칼럼명을 TARGET-DATA 자리에 넣어주고 조회한 데이터가 NULL인 경우 WANTED-VALUE를 반환하고 NULL이 아닌 경우엔 TARGET-DATA를 그대로 보여준다. 

COALESCE(COL1, 0)
;

04 NULL을 반환하는 함수

  • NULLIF(TARGET-DATA1, TARGET-DATA2)

TARGET-DATA1과 TARGET-DATA2에는 각각 칼럼이 들어간다. 만약 조회한 두 데이터가 같을 경우 NULLIF 함수는 NULL을 출력하고 그렇지 않을 경우 경우 TARGET-DATA1을 반환한다.

NULLIF(COL1, COL2)
;
반응형

댓글