본문 바로가기

DataBase

[SQL] CASE WHEN THEN END

CASE WHEN THNE END 문법은 JAVA에 나오는 if ~ else문과 비슷하다.

case 컬럼명| 표현식
when 조건식1 then 결과1
when 조건식2 then 결과2
...
else 결과
end

기능을 설명하자면, 컬럼 값이 하나씩 들어오면서 조건을 거치게 된다. 자신의 조건에 맞는 조건식과 만난다면 해당 결과 값으로 반환이 되고 모두 맞지 않다면 마지막에 else에 지정된 결과값으로 반환이 된다.

SELECT	NAME, NOTE,
CASE NOTE WHEN NOTE>=90 THEN '1등급'
WHEN NOTE < 90 AND NOTE >= 80 THEN '2등급'
WHEN NOTE < 80 AND NOTE >= 70 THEN '3등급'
WHEN NOTE < 70 AND NOTE >= 60 THEN '4등급'
ELSE '5등급
END AS 'LEVEL'
FROM MID_TEST;

위에 예시를 보게 되면  추출할 컬럼은 NAME, NOTE, LEVEL이라는 것을 알 수 있고 LEVEL 컬럼의 값은 각각의 레코드 안에 NOTE 컬럼의 값을 비교하면서 반환이 되는걸 알 수 있다.

다른 간단한 예시를 하나 더 보자.

create table test_case_when (
  a varchar2(5),
  b varchar2(5)
);

insert into test_case_when values ('*','*');
insert into test_case_when values ('+','+');
insert into test_case_when values ('-','-');
insert into test_case_when values ('.','.');

select a, 
  case
    when b = '*' then 'star'
    when b = '+' then 'plus'
    when b = '-' then 'minus' 
    else '????'
  end as b
from test_case_when;

왼쪽에 잇는 결과물이 기존 테이블의 값이고, 오른쪽에 보이는 결과가 case when then end를 거쳐서 나온 모습이다.

'DataBase' 카테고리의 다른 글

[SQL] JOIN - 2  (0) 2023.03.20
[SQL] Join  (0) 2023.03.20
[SQL] NULL 관련 함수  (0) 2023.03.20
TOP, LIMIT, ROWNUM  (0) 2023.03.20
MySQL Foregin Key 설정  (0) 2023.03.20