用'WHEN,THEN,ELSE,END'条件选择Query?

时间:2013-10-09 12:27:44

标签: java sql database transactions jooq

我有一个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)

3 个答案:

答案 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");