请求中的jooq iif或nvl2

问题描述 投票:0回答:1

我无法弄清楚我指定的错误是什么,STUDENT.CURRENT_CURS_ID 列中的空值不会被 iif 或 nvl2 处理,并且一般来说,具有空值的学生不包含在学生列表中

一旦我设置实际值 STUDENT.CURRENT_CURS_ID 而不是 null,学生就会进入 select

  var content =
     context
        .select(
            STUDENT.ID,
            STUDENT.NAME,
    //        nvl2(STUDENT.CURRENT_CURS_ID, currentCurs.CURS, ""),
              iif(STUDENT.CURRENT_CURS_ID.isNull(), "", currentCurs.CURS),
            futureCurs.CURS)
        .from(STUDENT)
        .innerJoin.......
        .fetchInto(StudentInfo.class);

我检查它适用于数据类型为字符串 iif 和 nvl2 的列,但 STUDENT.CURRENT_CURS_ID 具有 uuid 类型,并且由于某种原因不适用于 iif 和 nvl2。我找不到有解决办法吗?

jooq iif nvl
1个回答
0
投票

您可能正在内在加入

CURRENT_CURS_ID
。这意味着,如果是
NULL
,那么
INNER JOIN
将过滤掉您想要保留的记录。

只需使用

.leftJoin()
代替

© www.soinside.com 2019 - 2024. All rights reserved.