티스토리 뷰

DB/SQL

[MySQL] CASE / IF / COALESCE

SdardewValley 2021. 9. 2. 13:53
반응형

CASE, IF

조건을 처리할 때 사용

CASE는 Java나 C의 switch랑 비슷한 것 같다.

SELECT
    *,
  CASE
      WHEN case1 THEN process1
      WHEN case2 THEN process2
      WHEN case3 THEN process3
      ELSE process_else
  END
FROM
    student;

위와 같이 사용한다.

 

나이에 따라 학생들에게 학년을 배정해 줄 때

SELECT
    *,
  CASE
      WHEN age = 17 THEN 1
      WHEN age = 18 THEN 2
      WHEN age = 19 THEN 3
      ELSE 0
  END AS grade
FROM
    student;

위의 코드는 아래의 코드와 같은 의미이다.

SELECT
    *,
  CASE age
      WHEN 17 THEN 1
      WHEN 18 THEN 2
      WHEN 19 THEN 3
      ELSE 0
  END AS grade
FROM
    student;
💡 CASE에서는 제일 처음 조건부터 검사를 하기 때문에, 조건의 순서도 중요하다

 

 

IF는 삼항 연산자와 유사한 것 같다.

SELECT
    quantity,
    IF (quantity != 0, '있음', '없음') AS '재고'
FROM warehouse;

위는 quantity에 따라서 재고가 있거나 없음으로 표현하는 쿼리문이다.

 

quantity가 0이 아니면 '있음'이 리턴되고, 그 외에는 '없음'이 리턴된다.

 

 

COALESCE

NULL 값을 처리하기 위해서 사용

 

학년이 NULL인 경우 4로 대체

SELECT
	COALESCE(grade, 0)
FROM
	student;

 

NULLIF

NULL 값을 처리하기 위해서 사용
SELECT
	NULLIF(grade, 0)
FROM
	student;

COALESCE의 예시를 위와 같이 바꿀 수도 있다.

💡 COALESCE와 IFNULL의 차이
COALESCE는 여러개의 인자가 올 수 있지만 IFNULL은 2개이다.

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
29 30 31
글 보관함