타입 표현, 조건식

Mina Park·2022년 10월 27일
0

1. 타입 표현 케이스

  • 문자: ‘HELLO’, ‘She’’s’
  • 숫자: 10L(Long), 10D(Double), 10F(Float)
  • Boolean: TRUE, FALSE
  • ENUM: jpabook.MemberType.Admin (패키지명 포함)
  • 엔티티 타입: TYPE(m) = Member (상속 관계에서 사용)

2. 기타 표현

  • SQL과 문법 거의 동일
  • EXISTS, IN
  • AND, OR, NOT
  • =, >, >=, <=, <, <>
  • BETWEEN, LIKE, IS NULL
  • ENUM 사용 예시
String query = "select m.username, 'HELLO', true from Member m where m.type = :userType";
            List<Object[]> resultList = em.createQuery(query)
                    .setParameter("userType", MemberType.ADMIN)
                    .getResultList();


3. 조건식

  • 기본 CASE식: 조건을 지정
  • 단순 CASE식: 정확하게 매칭되는 경우
  • COALESCE: 하나씩 조회해서 null이 아니면 반환
  • NULLIF: 두 값이 같으면 null 반환, 다르면 첫번째 값 반환
			//기본 case식
            String query =
                    "select " +
                            "case when m.age <= 10 then '학생요금' " +
                            "     when m.age >= 60 then '경로요금' " +
                            "     else '일반요금' end " +
                    "from Member m";
            em.createQuery(query, String.class).getResultList();

            //coalesce
            String query2 = "select coalesce(m.username, '이름 없는 회원') from Member m";
            List<String> res2 = em.createQuery(query2, String.class).getResultList();

            //nullif
            String query3 = "select nullif(m.username, '관리자') from Member m";
            List<String> res3 = em.createQuery(query3, String.class).getResultList();

0개의 댓글