본문 바로가기
IT/SQL

[MySQL] NULL 이 있는 로우 조회하기

by marketinkerbell 2022. 1. 26.
반응형

 

 

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 은 값이 존재하지 않는다는 의미이다.

 

 

댓글