如何解决如果列是数字类型并且可为空,如何从oracle数据库获取空记录
我有包含三列的Oracle数据库表,即Id,RTOName,VehicleCode。我的桌子如下图
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 举报,一经查实,本站将立刻删除。