微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我有包含三列的Oracle数据库表,即Id,RTOName,VehicleCode。我的桌子如下图

enter image description here

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

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

从上面的查询中,我将仅获得非空值记录。例如。对于vCode参数61我将得到 马拉塔里61。如果我的vCode为null,那么我有问题,并且不会获得任何记录。 如何在本机查询中实现呢? 我知道我们可以在where子句的Query中使用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中都具有值并且也为空,那么我们需要像这样更改查询,

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。