본문 바로가기
Back-end/JPA 개념

28. JPQL - case 식

by devraphy 2022. 4. 28.

0. 개요

- 이번 포스팅에서는 JPQL에서 사용할 수 있는 case 식에 대해서 알아보자.

 

 

1. Case 식의 종류

a) 기본 CASE

- 예시를 통해 기본 case 식의 형태를 알아보자.

SELECT
   CASE WHEN p.age <= 20 THEN '유망주'
        WHEN p.age >= 35 THEN '노장'
        ELSE '현역'
    END
FROM Player p;

 

- 기본 case 식은 비교 대상에 대해서 조건을 부여할 수 있다.

- 자바에서 사용하는 switch case 문과 동일한 원리로 작동한다.

 

 

b) 단순 CASE

- 예시를 통해 단순 case 식의 형태를 알아보자.

SELECT
   CASE l.name
        WHEN 'leagueA' THEN '1부리그'
        WHEN 'leagueB' THEN '2부리그'
        ELSE '3부리그'
    END
FROM League l;

 

- 단순 case 식은 조건이 아닌 값을 비교하는 방식으로 작동한다.

 

 

c) COALESCE

- COALESCE는 자바에서 Map의 getOrDefault() 메서드처럼 동작한다.

- 즉, 조회된 다수의 결과를 하나씩 확인한 후 null이 아닌 경우 반환하며 null인 경우 설정한 값을 반환하는 기능이다.

 

- 다음 예시를 통해 COALESCE를 알아보자.

SELECT COALESCE(p.nickname, '별명없음') FROM Player p;

 

- 위의 예시는 조회된 선수의 닉네임이 null 값인 경우, null 대신 '별명 없음'이라는 문자열이 반환된다. 

- 닉네임이 null이 아닌 경우, 원래의 값이 반환된다. 

 

 

d) NULLIF

- NULLIF는 조회된 결과의 값이 설정한 값과 동일한 경우, null을 반환한다.

- 반대로 조회된 결과의 값이 설정한 값과 다른 경우, 원래의 값을 반환한다. 

 

- 다음 예시를 통해 NULLIF를 알아보자.

SELECT NULLIF(p.name, '박지성') FROM Player p;

 

- 위의 예시는 조회된 선수의 이름이 '박지성'인 경우, null 값을 반환한다.

- 반대로 조회된 선수의 이름이 '박지성'이 아닌 경우, 본래의 이름을 반환한다.

 

'Back-end > JPA 개념' 카테고리의 다른 글

30. JPQL - 경로 표현식과 묵시적 JOIN  (0) 2022.05.03
29. JPQL - 사용자 정의 함수  (0) 2022.05.02
27. JPQL - 서브 쿼리 & 타입 표현  (0) 2022.04.27
26. JPQL - 조인  (0) 2022.04.26
25. JPQL - 페이징  (0) 2022.04.25

댓글