【发布时间】:2021-12-08 21:03:37
【问题描述】:
我正在尝试在 jooq 中重现这个 MySQL 查询。
messageTable1、messageTable2 同列
select
msg.index as index,
left(msg.message, if(msg.type = 1, 10, msg.maxLength)) as message
from
messageTable1 as msg
select
msg.index as index,
left(msg.message, if(msg.type = 1, 10, msg.maxLength)) as message
from
messageTable2 as msg
制作函数java
public Message getMessageTest(String tableName) {
return roDslContext.select(
DSL.field("msg.index").as("index"),
left(DSL.field( "{0}", String.class, "msg.message"),
when(DSL.field("msg.type").eq(1), 10, DSL.field( "{0}", String.class, "msg.maxLength").as("message)
.from(tableName)
.fetchOneInto(Message.class);
}
但是....
when(DSL.field("msg.type").eq(1), 10, DSL.field( "{0}", String.class, "msg.maxLength").as("message)
jooq 是字段 msg.maxLength ... 不接受
也是如此
如何,何时,iif插入字段列数据??
【问题讨论】:
-
tableName -> "messageTable1" 或 "messageTable2"