oracle where 右边表达式为null 读取不到数据,看sql 日志没转成is nul 而是=null 返回
C#论坛
老数据
4
1858
悬赏:5 飞吻
问题:oracle where 右边表达式为null 读取不到数据,看sql 日志没转成is null 而是=null
比较常见的操作时先读取主表,然后再其他表根据主表的字段过滤查询,如下常见操作例子:
var buinessList = db_flow.Queryable<ZCT_WFE_BUSINESS>().Where(c => c.BUSSINESSCODE == businessCode).ToList(); business = buinessList.FirstOrDefault(); int? regoinId =null; businessFlow = db_flow.Queryable<ZCT_WFE_BUSINESSFLOW>().Where(c => c.BUSINESSID == business.BUSINESSID && c.REGOIDID == regoinId).First();
business.BUSINESSID 表ZCT_WFE_BUSINESS的主键肯定是有值的 ,REGOIDID字段是允许为空的,这时刚好传参regoinId 为null,看sql 日志没转成is null 而是 REGOIDID=:REGOIDID,这样赋值肯定不对的 应该是 REGOIDID is null 如果以下写法又是可以的 REGOIDID is null businessFlow = db_flow.Queryable<ZCT_WFE_BUSINESSFLOW>().Where(c => c.BUSINESSID == business.BUSINESSID && c.REGOIDID == (int?)null).First(); 源码修复(考虑可能不周 ,请作者修复借鉴):
热忱回答(4)
-
fate stay night VIP0
2020/10/27db.Queryable<Order>()
.WhereIF(xx==null,it.id == null)
.WhereIF(xx != null, it.id == id)
.ToList();
你先这样用,具体是否修改我在评估一下
0 回复 -
fate stay night VIP0
2020/10/28@fate stay night: http://www.donet5.com/Home/Doc?typeId=1213 经过我考虑决定添加一个sqlfunc函数实现你的需求,后面版本会发布
0 回复 -
风之圣痕 VIP0
2020/12/10@fate stay night:能否内部直接判断下做个转换 ,不要再额外调用sqlfunc 这样要判断多少个地方,都不敢保证数据一定不是null的
0 回复 -
fate stay night VIP0
2020/12/10@风之圣痕:正常逻辑是 whereif(xx!=null, it=>it.xx==xx)
像你这种要等于NULL的逻辑很少
0 回复