TIL(Today I Learned)

[MySQL/코딩테스트] NULL 처리하기(IFNULL, CASE, COALESCE 사용)

yunseohhe 2024. 8. 8. 18:47

안녕하세요!

오늘은 SQL 코딩테스트 문제를 들고왔습니다.

 

문제 1
문제 2

 

일단 저는 이 문제를 보고,  "replace"를 활용하여 문제를 풀으면 되겠는데?? 생각했습니다ㅎㅎ

 

제 블로그 SQL 함수 정리 글

 

당연히 통과할 줄 알았던 테스트였지만,,

시도 1
결과 1

결과가 이상하게 나오더라구요..!

그래서 replace에 대해 다시 찾아 본 결과,

replace바꿀 값이 아무것도 없으면 "Null"을 치환한다고 합니다.

생각해보니깐 문자열을 바꿔주는 함수인데, 애초에 아무것도 없는(null) 값을 바꾸려고 시도했던 부분이 스스로 너무 부끄러웠습니다ㅎㅎ

 


 

이제! Null 값을 치환해주는 방법에 대해 알아보겠습니다.

 

1.  IFNULL 함수

  • 컬럼의 데이터가 null인 경우 대체 값으로 치환할 수 있습니다.(null값을 치환하는 가장 간단한 방법!!)
  • 사용 방법
IFNULL(컬럼명, 'null을 대체할 값')

ifnull 시도
ifnull 결과

 

2.  CASE 문 (제가 작성하였던 설명을 캡처해 왔습니다.)

case문 설명

 

case문을 사용하여 null 값 변환하는 방법은

 

case문 시도
case문 결과

 

3.  COALESCE 함수

  • 매개변수로 전달된 여러 개의 값 중에서 첫 번째로 null이 아닌 값을 반환하는 함수입니다.
  • IFNULL이랑 비슷하지만, 차이점이 coalesce함수는 여러개의 값을 넣을 수 있습니다.
  • 즉, null을 사용하지 않기 위해 사용하는 함수라고 생각하면 쉬울 것 같습니다.
  • 사용 방법
COALESCE(컬럼명1, 컬럼명2, 컬럼명3, ...,  'null의 대체값')

COALESCE 시도
COALESCE 결과

 

 


오늘의 요약

replace함수는 값이 있는 문자열 반환해주는 함수이다.

NULL값을 치환하고 싶으면 "IFNULL"..!!