NULL 은 값이 없음을 나타내는 단어다.
데이터 테이블에 값이 없는 로우가 있을 수 있다.
회원 가입할 때 선택 값으로 넣어둔 항목들은
유저가 회원 가입시 빈 값으로 두고 넘어 갈 수 있기 때문에
그 부분은 NULL 이 된다.
데이터 추출 시 NULL 인 부분들을 조회 하고 싶을 때 어떻게 조회 하는지 알아보자
IS NULL
NULL 인 로우 조회
# member 테이블에서 address 칼럼이 NULL 로우들 조회
SELECT * FROM member WHERE address IS NULL;
IS NOT NULL
NULL 이 아닌 로우 조회
# member 테이블에서 address 칼럼이 NULL 이 아닌, 값이 있는 로우들만 조회
SELECT * FROM member WHERE address IS NOT NULL;
# 하나의 컬럼이라도 NULL 이 있는 로우들 조회
SELECT * FROM member
WHERE address IS NULL
OR weight IS NULL
OR height IS NULL;
함수를 사용해서 NULL 조회하기
1. COALESCE
COALESCE ( A, B )
-> A 칼럼에 값이 있으면 값 출력, NULL 이면 B 출력
SELECT
COALESCE (height, 'N/A'), #height 칼럼에 값이 있으면 height 값 출력, NULL 이면 N/A 출력
COALESCE (weight, '---'), #weight 칼럼에 값이 있으면 weight 값 출력, NULL 이면 --- 출력
COALESCE (address, '@@@') #address 칼럼에 값이 있으면 address 값 출력, NULL 이면 @@@ 출력
FROM member ;
COALESCE ( A, B, C )
-> A 칼럼에 값이 있으면 값 출력, NULL 이면 B 출력, B도 NULL 이면 C 출력
#height 칼럼에 값이 있으면 height 값 출력, NULL 이면 weight에 3 곱한 값 출력, weight 마저 NULL 이면 N/A 출력
SELECT
COALESCE (height, weight *3, 'N/A')
FROM member ;
2. IFNULL 함수
SELECT
IFNULL (height, 'N/A')
FROM member ;
3. IF 함수
엑셀 함수 IF 와 사용법 동일
IF 함수의 첫번째 인자인 조건식이 True 면 두번째 인자 리턴,
False 면 세번째 인자 리턴
SELECT
IF (height IS NOT NULL, height, 'N/A')
FROM member ;
4. CASE 함수
SELECT
CASE
WHEN height IS NOT NULL THEN height
ELSE 'N/A'
END
FROM member ;
참고1 )
NULL 은 어떠한 값이 아니기 때문에
= NULL
!= NULL
<> NULL
이런건 모두 쓸 수 없다.
IS NULL 또는 IS NOT NULL 이렇게만 사용 가능하다
참고 2)
NULL 은 뭘 더하든, 빼든, 곱하든, 나누든 항상 NULL 이다.
애초에 NULL 은 값이 존재하지 않는다는 의미이다.
'IT > SQL' 카테고리의 다른 글
[MySQL] GROUP BY , HAVING, WITH ROLLUP (0) | 2022.01.26 |
---|---|
[MySQL] 컬럼 이름 바꿔서 보여주기 Alias (AS) (0) | 2022.01.26 |
[MySQL] DATE 관련 SQL 함수 모음 (CURDATE, DATEDIFF 등) (0) | 2022.01.23 |
[MySQL] 대소문자 구분해서 검색하기 _ BINARY (0) | 2022.01.23 |
[MySQL] % ' " _ 문자로 쓰고 싶을 땐 이스케이핑 (0) | 2022.01.23 |
댓글