1

我有三列的 Oracle 数据库表,即 Id、RTOName、VehicleCode。我的桌子如下所示

在此处输入图像描述

RTOName 是 varchar2 类型,VehicleCode 是 NUMBER(2,0) 并且是可为空的字段。所以我有如下数据,我想用 Some VehicleCode 和 null 值获取记录。像这样的表格设计已经完成,因此更改将对我的应用程序产生很大影响。我有一个像这样使用的 JPA Native Query,我想获取具有空值的记录。

Query query = createNativeQuery("select RTOName,VehicleCode from tbl_vehiclecodes WHERE VehicleCode=#vCode");
query.setParameter("vCode", vehicleCode);

从上面的查询中,我只会得到非空值记录。例如。对于 vCode 参数 61,我将得到 Marathalli,61。如果我的 vCode 为空,我有问题,我不会得到任何记录。如何在本机查询中实现这一点?我知道我们可以在 where 子句的查询中使用 IS NULL。因为我这里有一些数字在我的情况下如何解决这个问题?任何帮助

谢谢

4

1 回答 1

2

我们可以OR在这里使用,

以下查询将为您提供与参数匹配的记录vCode以及具有 null 的行的记录,如果vCode为 null,您将仅获得带有null值的记录。

Query query = createNativeQuery("select RTOName,VehicleCode from tbl_vehiclecodes WHERE (VehicleCode is null or VehicleCode=#vCode)");

编辑:考虑到@Ranagal 的疑虑

如果您希望在传递给vCode您的空值的情况下希望所有记录都具有值vehiclecode并且具有空值,那么我们需要更改查询,例如,

Query query = createNativeQuery("select RTOName,VehicleCode from tbl_vehiclecodes WHERE (VehicleCode is null or VehicleCode=coalesce(#vCode,VehicleCode))");
于 2020-09-07T16:10:01.683 回答