SQL

[MySQL] CASE

SangRok Jung 2022. 9. 16. 23:45
반응형

CASE


WHEN 다음의 조건이 성립하면 THEN 다음의 식이 실행된다.

 

▶ 기본 문법

CASE WHEN 조건식1 THEN 식1
	(WHEN 조건식2 THEN 식2)
	(ELSE 식3)
END
CASE 
	WHEN 1 THEN '남자'
    WHEN 2 THEN '여자'
END

 

 

 

 

 

 

 

 

검색케이스문


null을 활용한 조건을 실행할시 더 적합하다.

 

 

 

 

본 표

mysql> SELECT a,
    -> CASE WHEN a IS NULL THEN 0 
    -> ELSE a
    -> END AS 'a(null=0)'
    -> FROM sample37;

CASE문 적용 표

 

mysql> SELECT a,                                                                   
    -> CASE WHEN a=1 THEN '남자'                                                   
    -> WHEN a=2 THEN '여자'
    -> END AS 성별
    -> FROM sample37;

 

 

▶ null값이 0 일때 평균을 구하기

mysql> SELECT AVG(
    -> CASE
    -> WHEN quantity IS NULL THEN 0
    -> ELSE quantity 
    -> END) 'avgnull0'
    -> FROM sample51; 
+----------+
| avgnull0 |
+----------+
|   3.2000 |
+----------+

 

 

▶ NULL 값을 찾아 no name으로 출력

SELECT ANIMAL_TYPE,
    CASE 
        WHEN NAME IS NULL THEN 'No name'
        ELSE NAME
    END AS NAME, 
    SEX_UPON_INTAKE
FROM ANIMAL_INS;

 

 

단순 CASE 문


단순한 조건일 때 문장이 더 짧아지는 장점이 있다.

 

 

mysql> SELECT a, 
    -> CASE a
    -> WHEN 1 THEN '남자'
    -> WHEN 2 THEN '여자'
    -> END '성별'
    -> FROM sample37;

 

 

 

 

 

 

예제


▶ 샘플51 quantity열의 평균을 구하고 만약 quantity에 NULL이 있을 때는 0으로 치환후 계산. 이름은 avgnull0

mysql> SELECT AVG(
    -> CASE
    -> WHEN quantity IS NULL THEN 0
    -> ELSE quantity
    -> END) AS avgnull0
    -> FROM sample51;
    
+----------+
| avgnull0 |
+----------+
|   3.2000 |
+----------+
반응형

'SQL' 카테고리의 다른 글

[MySQL] ALTER TABLE  (0) 2022.09.17
[MySQL] EXISTS  (0) 2022.09.17
[MySQL] 집계함수  (1) 2022.09.16
[MySQL] AS  (0) 2022.09.16
[MySQL] 날짜 연산  (0) 2022.09.16