substring 関数を使用することをお勧めします。以下は、querydsl v3.2.3 を使用してローカルで作業するようになった例です。
QMyTable g = new QMyTable("g");
query = new SQLQuery(connection , dialect);
List<Tuple> l = query.from(g).list(g.mystringfield,
g.mystringfield.substring(g.mystringfield.length().subtract(10),
g.mystringfield.length() ).substring(0, 5).as("mystringfield5"));
for (Tuple t : l) {
System.out.println(t.get(g.mystringfield) + " =====> " + t.get(1, String.class));
}
生成されたクエリは次のようになります。
select g.mystringfield,
(substr(substr(g.mystringfield,(length(g.mystringfield) - ?)+1,length(g.mystringfield)-(length(g.mystringfield) - ?)),1,5)) as mystringfield5
from MyTable g