Case 문

  • select, where, order by에서 사용 가능하다.

단순한 조건

@SpringBootTest
@Transactional
public class QuerydslBasicTest {

    @Test
    void caseStatement() {
        List<String> result = queryFactory
                .select(member.age
                        .when(10).then("열살")
                        .when(20).then("스무살")
                        .otherwise("기타"))
                .from(member)
                .fetch();
    }
}
select case
           when member0_.age = ? then ?
           when member0_.age = ? then ?
           else '기타'
           end as col_0_0_
from member member0_

복잡한 조건

  • 복잡한 조건에는 CaseBuilder를 사용한다.

orderBy + case

  • 복잡한 조건은 변수로 선언해 select, orderBy에서 활용한다.

  • 웬만하면 DB에서는 최소한의 조건만 걸고 case로 들어갈 수 있는 조건들은 애플리케이션에서 하자.

Last updated

Was this helpful?