JPA JPQL Case, Coalesce, NULLIF

KMS·2022년 4월 12일
0

JPA Basics

목록 보기
17/20

Case

            /**
            * CASE
            * WHEN
            * END
            */

			String queryA = "select" +
                        " case when m.age <= 20 then '청소년'" +
                        " when m.age <= 25 then '청년'" +
                        " else '성인'" +
                        " end" +
                    " from Member m";
            List<String> resultListA = em.createQuery(queryA, String.class)
                    .getResultList();
            for (String s : resultListA) {
                System.out.println("s.case = " + s);
            }

나이가 20이하면 청소년, 20초과 25이하면 청년, 그리고 25초과면 성인

결과:
s.case = 청소년
s.case = 청소년
s.case = 청소년
s.case = 청소년
s.case = 청소년
s.case = 청소년
s.case = 청년
s.case = 청년
s.case = 청년
s.case = 청년
s.case = 청년
s.case = 성인
s.case = 성인
s.case = 성인
s.case = 성인
s.case = 성인

기본 Case식:
select
case when m.age <= 10 then '학생요금'
when m.age >= 60 then '경로요금'
else '일반요금'
end
from Member m
단순 Case식:
select
case t.name
when 'TeamA' then '110%'
when 'TeamB' then '120%'
else '105%'
end
from Team t

Coalesce

	String queryB = "select coalesce(m.username, '이름 미입력') from Member m";
    List<String> resultListB = em.createQuery(queryB, String.class)
                    .getResultList();

사용자 이름이 없으면(NULL) '이름 미입력' 반환

결과:
s.coalesce = 이름 미입력
s.coalesce = member6
s.coalesce = 이름 미입력
s.coalesce = 이름 미입력
s.coalesce = member9
s.coalesce = 이름 미입력
s.coalesce = 이름 미입력
s.coalesce = member12
s.coalesce = 이름 미입력
s.coalesce = 이름 미입력
s.coalesce = member15
s.coalesce = 이름 미입력
s.coalesce = 이름 미입력
s.coalesce = member18
s.coalesce = 이름 미입력
s.coalesce = 이름 미입력

NULLIF

	String queryC = "select NULLIF(m.age, :age) from Member m";
    List<Integer> resultListC = em.createQuery(queryC, Integer.class)
                    .setParameter("age", 20)
                    .getResultList();

나이가 20이면 null을 반환하고, 그 외에는 본인의 나이를 반환

결과
s.nullif = 15
s.nullif = 16
s.nullif = 17
s.nullif = 18
s.nullif = 19
s.nullif = null
s.nullif = 21
s.nullif = 22
s.nullif = 23
s.nullif = 24
s.nullif = 25
s.nullif = 26
s.nullif = 27
s.nullif = 28
s.nullif = 29
s.nullif = 30

profile
Student at Sejong University Department of Software

0개의 댓글