如果列是数字类型且可为空,如何从oracle数据库中获取空记录

how to get Null records from oracle database if column is Number type and nullable

我的 Oracle 数据库 table 包含三列,即 Id、RTOName、VehicleCode。我的 table 如下所示

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

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

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

谢谢

这里可以用OR,

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

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

编辑:考虑@Ranagal

的质疑

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

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