持久层中,使用Map集合存放返回值时,取得的返回结果size()可能与从数据库查询结果显示不一致。

本文探讨了在Navicat和项目中使用SQL查询时,如何处理查询结果中的null值问题,介绍了Oracle的NVL和NVL2函数以及MySQL的IFNULL函数,并揭示了在持久层调用中可能遇到的数据不完整现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

同样的SQL查询语句,分别在navicat中执行和在项目中调用持久层


在navicat中查询到的结果,12个字段信息。

{JGMC=JD, nd=2021, 总记录数=3, 核验通过=2, qxmc=建德市, jd=2, yldwid=1325647510802268160, yd=4, 自动核验通过=2, 人工核验通过=0, 核验不通过=1}

控制台输出map对象,这里只取到了11个键值对数据。

当数据库中存在字段数据为null时,使用Map集合存储的返回结果集只存放了这个除这个字段以外的其他字段数据。

解决:
Oracle:查询语句中使用NVL(E1,E2)或NVL2(E1,E2,E3)函数
nvl函数基本语法为nvl(E1,E2),意思是E1为null就返回E2,不为null就返回E1。
nvl2函数的是nvl函数的拓展,基本语法为nvl2(E1,E2,E3),意思是E1为null,就返回E3,不为null就返回E2。
Mysql: 使用IFNULL(expr1,expr2)函数,用法是一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值