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개이다.