본문 바로가기

JPA

조건식 (case, coalesce, nullif)

기본 CASE 식

case로 열고, end로 닫음

Select
	case 
		when m.age <= 10 then "학생요금"
		when m.age >= 60 then "경로요금"
		else "일반요금"
	end
from Member m

단순 CASE 식

case 앞에 변수 명시 가능

select
	case t.name
		when '팀a' then '인센티브추가'
		when '팀b' then '인센티브감소'
		else '인센유지'
	end
from Team t

COALESCE

하나씩 조회 후, NULL이 아니면 반환

//m.username이 null ➡️ "이름 없는 회원"이 반환
//m.username이 not null ➡️ m.username 값 반환
SELECT
	COALESCE(m.username, '이름 없는 회원')
FROM
	Member m
    
------REUSLT------ 
(DB에 member1.username = "mem A",
	  member2.username = null 로 저장된 상태)
mem A
이름 없는 회원

NULLIF

두 값이 같으면 NULL 반환, 다르면 첫 값을 반환

// m.username != "관리자" ➡️ m.username 값 반환 
// m.username == "관리자" ➡️ null 반환

SELECT
	NULLIF(m.username, '관리자')
FROM
	Member m
    
-------현재 DB-------
mem1.username = Mem A
mem2.username = '관리자'
-------RESULT-------
Mem A
null

 

강의 출처

김영한님의 JPA강의

https://www.inflearn.com/course/lecture?courseSlug=ORM-JPA-Basic

'JPA' 카테고리의 다른 글

[JPA] Named Query - 쿼리를 함수처럼 만들어보자  (0) 2023.06.01
[JPA] 경로 표현  (0) 2023.05.29
즉시로딩(EAGER Loading)과 지연로딩(LAZY LOADING)  (0) 2023.05.23
프록시  (0) 2023.05.23
JPA - 연관관계 주인(feat. mappedBy)  (0) 2023.05.19