[SQL] 조건문 (case when / if / ifnull /coalesce)

박무성·2022년 9월 28일
0

SQL

목록 보기
1/2

개요

SQL의 조건문에대해 알고 null 처리를 어떻게 할 수 있는가 알아보자

SQL에서의 null 처리란

만약 특정 컬럼이 Null값이라면 다른 값으로 대체해주는 처리과정을 일컫는다.
not nullable한 필드나 컬럼을 처리하는 경우 null값이 나오면 오류가 나기 때문에 이를 처리해주는 방법 중 하나라고 알면 되겠다.

if

  • 하나의 조건문에대한 참, 거짓 바이너리한 결과값에따른 값 처리를 하는 구문이다.
  • Syntax
if ( 조건문(param1), 참일때 값(param2), 거짓일때 값(param3))

parameter는 3개로 param1인 조건문에 참이나오는 경우 param2를 return하고 거짓인 경우 param3을 return하게된다.

  • ex)
select member_id, if ( isnull(phone_number), '-', phone_number ) from member

위 구문 member table의 member id와 phone number컬럼이 null이면 '-' 있이면 value를 return하는 쿼리 구문이다.

ifnull

  • if문 보다 Null처리를 편안히 할 수 있는 구문이 ifnull이다.
  • Syntax
SELECT IFNULL(Column명, "Null일 경우 대체 값") FROM 테이블명; 

위와 같은 syntax로 사용되며 column이 null인 값이면 값을 대체 값으로 대체 가능하다.
server application에서 사용시 nullable하지 않은 필드(칼럼)에 null 예외처리가 필요하다면 상황에따라 이 쿼리로 처리가 가능할 것이다.
(하지만 쿼리로 null 예외처리를 해야하는 usecase는 아직 만나지 못함)

case when

  • 하나의 조건문에대한 여러 결과값에따른 값 처리를 하는 구문이다.
  • Syntax
case (조건 또는 값: param)
          when 값1 then 표시값
          when 값2 then 표시값
        else 표시값
        end

case 구문은 조건 또는 값인 param의 값에따라 여러 값을 리턴할 수 있다. param의 값에 나올 수 있는 값을 when 값 then 표시값 형태로 표현하여 값과 param이 일치하는 조건문의 표시값을 return 한다.

  • ex)
select case id when '1' then a when '2' then b else c end from member

위 구문의 member table의 id 칼럼 값에 따라 return 값이 달라지는 구문이다.
id가 1이면 a를 2면 b를 이외의 값이면 c를 return한다.

profile
기본기를 중시하는 개발자, 박무성입니다

0개의 댓글