객체지향 쿼리 언어 - 조건식(CASE 등)

도윤·2024년 3월 22일
post-thumbnail

조건식(CASE 등)

기본 CASE 식

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

기본 CASE 식은 컨디션에 대한 조건을 넣을 수 있는 CASE 식이다. 위의 예제를 인텔리제이에서 적어보면 아래와 같다.


참고로 query 는 String 이므로 띄어쓰기에 아주 주의를 기울여야 한다. 전 키워드와 다음 키워드 사이에 띄어 쓰기를 잘 했는지 확인해가면서 작성하자.
그리고 member 의 나이를 10으로 세팅해주고 실행해보자.

member.setAge(10);

단순 CASE 식

select 
	case t.name
    	when '팀A' then '인센티브110%'
        when '팀B' then '인센티브120%'
        else '인센티브105%'
        end
  from Team t

단순 CASE 식은 조건식이 아니라 정확하게 일치하면 어떤 것을 하라는 CASE 식이다.

조건식 - CASE 식

  • COALESCE : 하나씩 조회해서 null 이 아니면 반환
  • NULLIF : 두 값이 같으면 null 반환, 다르면 첫번째 값 반환
  • 사용자 이름이 없으면 이름 없는 회원을 반환

member 의 이름을 null 로 세팅해준다.

member.setUsername(null);

그리고 쿼리를 아래와 같이 작성하고 실행해보자.

  • 사용자 이름이 '관리자'이면 null 을 반환하고, 나머지는 본인의 이름을 반환
    이번에는 member 의 이름을 Admin 으로 세팅해준다.
member.setUsername("Admin")

그리고 아래 쿼리를 작성하고 실행해보자.

출처 : 자바 ORM 표준 JPA 프로그래밍 - 기본편

profile
기록은 기억을 이긴다⭐

0개의 댓글