JPQL - CASE 식

2024. 3. 25. 14:39JPA

반응형

특정 조건에 따라 분기할 때 CASE 식을 사용한다. CASE 식은 4가지 종류가 있다.

  • 기본 CASE
  • 심플 CASE
  • COALESCE
  • NULLIF

 

▼ 기본 CASE

CASE
         {WHEN <조건식> THEN <스칼라식>}+
          ELSE <스칼라식>
select
	case when m.age <= 10 then '학생요금'
    	 when m.age >= 60 then '경로요금'
         else '일반요금'
    end
from Member m

 

▼ 심플 CASE
심플 CASE는 조건식을 사용할 수 없지만 문법이 단순하다. 자바의 switch case문과 비슷하다.

CASE <조건대상>
          {WHEN <스칼라식1> THEN <스칼라식2>}+
           ELSE <스칼라식>
END
select
	case t.name
    	when '팀A' then '인센티브110%'
        when '팀B' then '인센티브120%'
        else '인센티브105%'
    end
from Team t

 

▼ COALESCE

COALESCE (<스칼라식> {, <스칼라식>}+)

스칼라식을 차례대로 조회해서 null이 아니면 반환한다.

예) m.username이 null이면 '이름 없는 회원'을 반환하라.

select coalesce(m.username, '이름 없는 회원') from Member m

 

▼ NULLIF

NULLIF(<스칼라식>, <스칼라식>)

두 값이 같으면 null을 반환하고 다르면 첫 번쨰 값을 반환한다. 

예) 사용자 이름이 '관리자'면 null을 반환하고 나머지는 본인의 이름을 반환하라.

select NULLIF(m.username, '관리자') from Member m
반응형

'JPA' 카테고리의 다른 글

JPQL - Criteria 기초 (조회, 집합, 정렬)  (0) 2024.05.28
JPQL - Named 쿼리 - 정적 쿼리  (0) 2024.05.14
JPQL - 서브 쿼리  (2) 2023.10.23
JPQL - 경로 표현식  (4) 2023.10.23
JPQL - 페치 조인(Fetch Join)  (0) 2023.10.12