본문 바로가기

Database/MSSQL

MSSQL NULL은 존재하지 않는 값?

 

MSSQL NULL은 존재하지 않는 값?

NULL 값은 아직 정의 되지 않아 데이터를 알 수 없거나 해당 사항이 없는 경우, 나중에 추가됨을 나타는 값으로 아직 알 수 없다는 의미이다.

 

0과 공백('')과 NULL

0과 공백('')과 NULL 다른 의미이다.
0은 숫자로 '0' 이과, 공백('')은 하나의 문자이지만 비어 있는 값이고, NULL은 unknown 또는 N/A(not applicable)이라는 의미로 알 수 없거나 존재하지 않는 값을 의미한다.

 

 

MSSQL과 오라클에서의 NULL

 오라클의 경우 공백('')을 VARCHAR2 데이터 타입에 INSERT를 하면 자동적으로 NULL로 바꿔서 저장한다.
즉 오라클에서는 공백('') 문자열이 저장되는 것을 허용하지 않고 NULL로 처리한다.

 

또한 오라클에서는 NULL을 가장 큰 값으로 간주하지만 MSSQL에서는 가장 작은 값으로 간주한다.
내림 차순이나 오름 차순으로 정렬을 하면 이 기준으로 정렬을 하게 된다.
즉 내림 차순으로 정렬을 하면 NULL이 먼저 나오고 큰수에서 작은 수로 정렬 된다.
만약 NULL을 마직막에 나오게 하려면 'ORDER BY DESC NULL LAST', 반대로 처음에 나오게 하려면 NULLS FIRST를 사용하면 된다.

 

NULL 연산은?

 NULL은 값이 아니기 때문에 연산의 결과 값 또한 NULL이다.
즉 모르는 데이터에 숫자를 더하거나 빼도 결과는 모르는 값이기 때문이다.
또한 '!=', '^=', '<>' ,'=' 등의 표현도 먹히지 않는다.

 

NULL + 2 = NULL
NULL - 2 = NULL
NULL * 2 = NULL
NULL / 2 = NULL 

단 SUM(), AVG() 등의 함수에 NULL이 있으면 NULL은 무시하고 함수를 수행한다.
마치 존재하지 않는 행처럼...^^

 

MSSQL에서 NULL 값을 찾는 방법 - IS NULL 과 IS NOT NULL

IS NULL 은 특정 필드의 값이 NULL인 경우를 조회하고 싶을 경우에 사용하고,
특정 필드의 값이 NULL이 아닌 경우를 조회하고 싶을 때는 IS NOT NULL을 사용하면 된다.

 

IS NULL 사용방법

 

SELECT [컬럼명] FROM [테이블명] WHERE [컬럼명] IS NULL


SELECT [컬럼명] FROM [테이블명] WHERE [컬럼명] IS NOT NULL

 

IS NULL, IS NOT NULL 사용 예제

 

SELECT F_DATE, F_SELECT FROM T_INPUT WHERE F_SELECT IS NULL


SELECT F_DATE, F_SELECT FROM T_INPUT WHERE F_SELECT IS NOT NULL