일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- BFS
- 정보처리산업기사
- 백준 알고리즘
- 문제풀이
- 회고
- 코딩봉사
- 코틀린
- 스프링
- java
- MYSQL
- 파이썬
- 자바
- 알고리즘
- C++
- SQL
- 데이터베이스
- CJ UNIT
- 프로그래머스
- 백준알고리즘
- 1과목
- SW봉사
- 코딩교육봉사
- 공부일지
- 백준
- 소프티어
- softeer
- python
- kotlin
- 시나공
- programmers
Archives
- Today
- Total
JIE0025
[MSSQL] NULL 값 본문
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 |