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 |
댓글