관리 메뉴

JIE0025

[MSSQL] NULL 값 본문

Application/Database

[MSSQL] NULL 값

Kangjieun11 2021. 4. 14. 15:49
728x90

SQL에서 누락된 (Unknown) 값을 표현하기 위해 NULL값을 사용한다.

-SQL 에서는 언어 요소별로 UNKNOWN 을 처리한다.

 

1) SQL 쿼리 필터절 (WHERE, HAVING) 에서 NULL값이 사용된 경우

 

쿼리필터절은 술어식의 결과값이 TRUE인 결과만 받아들인다. 

FALSE, UNKNOWN인 경우, 둘다 받아들이지 않는다. 

 

예) WHERE custid>71 의 경우, custid가 71보다 큰 경우의 행들만 조회가 된다. 

custid의 값이 NULL이거나 70 이하이면 Filter절을 통과하지 못한다.

70인경우 -> FALSE  -> 필터절 통과 X

72인경우 -> TRUE-> 통과 O

NULL인경우 -> TRUE -> 통과 X

 

 

2) SQL 체크 제약조건에서 NULL값이 사용된 경우

 

체크 제약조건은 FALSE만 받아들이지 않는다.

TRUE, UNKNOWN 둘다 받아들인다.

 

예) CHECK(custid >0)

custid값이

1인경우 -> TRUE -> CHECK 제약 만족 

0인경우 -> FALSE -> 만족X

NULL인경우 -> TRUE -> 만족O

 

# N is Unicode

SELECT custid, country, region, city
FROM Sales.Customers
WHERE region = N'WA';

 

 

 

SELECT custid, country, region, city
FROM Sales.Customers
WHERE region <> N'WA';

 

 

 

 

SELECT custid, country, region, city
FROM Sales.Customers
WHERE region = NULL;

 

Q. region에는 NULL값이 없는것일까?

A. 아니다. 전체 쿼리를 체크해보자.

SELECT * FROM Sales.Customers;

 

 

비교연산자는 값이 존재하는 경우에만 사용할 수 있다.

NULL에는 값이 없기 때문에 비교연산자를 사용할 수 없다.

NULL을 체크하기 위해서는 IS NULL과 같은 술어 연산자를 사용하면 된다. 

SELECT custid, country, region, city
FROM Sales.Customers
WHERE region IS NULL;

 



IS NOT NULL

SELECT custid, country, region, city
FROM Sales.Customers
WHERE region IS NOT NULL;

 

 

SELECT custid, country, region, city
FROM Sales.Customers
WHERE region <> N'WA'
   OR region IS NULL;

 

'Application > Database' 카테고리의 다른 글

[MySQL] 데이터의 형식  (0) 2021.04.17
[MSSQL] LIKE 술어  (0) 2021.04.14
[MSSQL] CASE 표현식  (0) 2021.04.14
[MSSQL] 술어와 연산자, 연산자 우선순위  (0) 2021.04.14
[MySQL] 순위 함수 (분석 함수)  (0) 2021.04.13