我有一个selectquery条件的问题,我知道selectquery条件是错误的。所以任何人都可以帮助我在这里设置这个条件。
caseInfoList = new GroupModel<CaseInfoDataNew>();
Transaction transaction = Transaction.current();
SelectQuery<Record> selectQuery = transaction.selectQuery();
selectQuery.addSelect("CASE ValidInfoGroup.InfoGroup WHEN null THEN ValidInfo.InfoGroup ELSE ValidInfoGroup.InfoGroup END InfoGroup");
但我想将字符串参数更改为field.how它可以。
错误: - SelectQuery类型中的方法addSelect(Field ...)不适用于参数(String)
答案 0 :(得分:1)
我怀疑你还没有试过jOOQ CASE
expression support吗?解决方案类似于:
selectQuery.addSelect(
DSL.decode().value(ValidInfoGroup.InfoGroup)
.when(DSL.val(null), ValidInfo.InfoGroup)
.otherwise(ValidInfoGroup.InfoGroup)
.as("InfoGroup")
);
但是,根据您实际的CASE
表达式,您可能最好使用nvl
:
selectQuery.addSelect(
DSL.nvl(ValidInfoGroup.InfoGroup, ValidInfo.InfoGroup).as("InfoGroup")
);
答案 1 :(得分:0)
要检查null is Null
应该使用
... CASE ValidInfoGroup.InfoGroup WHEN null THEN ....
答案 2 :(得分:0)
试
selectQuery.addSelect("CASE ValidInfoGroup.InfoGroup WHEN Is NULL
THEN ValidInfo.InfoGroup ELSE ValidInfoGroup.InfoGroup END InfoGroup");