Adding CASE WHEN field IN () with jooq

Viewed 19

How can I create a CASE... WHEN IN (list) condition with jooq?

I'm converting a complex order by with cases to a jooq query builder and am unable to find documentation or examples for creating IN conditions:

CASE WHEN myfield IN ("val1", "val2") THEN 1 ELSE -1 END ASC,

I can make case... when statements for a single value match:

queryBuilder.addOrderBy(case_(MYTABLE.MYFIELD)
  .when("val1", 1)
  .else_(-1).asc());
1 Answers

I managed to find this solution:

queryBuilder.addOrderBy(DSL.decode()
    .when(MYTABLE.MYFIELD)
    .in("val1", "val2"), 1)
    .else_(-1).asc());
Related