大佬们帮忙看看sql要怎么调整?前端传参A时,organization为空的数据也要展示

前端传参fine_username为A时,展示所有数据。现在这样写organization为空的数据过滤掉了,求大佬指点!

select * from l where 1=1 ${if(len(organization) == 0,"","and organization = '" + organization + "'")}

and organization in (select distinct organization from m where 1=1 ${if(or(len(fine_username) == 0,fine_username = “A”),””,”and login = '" + fine_username + "'")})

FineReport SQL TYJCC 发布于 2023-1-9 22:08 (编辑于 2023-1-9 22:51)
1min目标场景问卷 立即参与
回答问题
悬赏:8 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
StudyYLLv6初级互助
发布于2023-1-10 08:43(编辑于 2023-1-10 08:44)

原因应该是in包含null值不会查询出null的结果。可以百度看看原因或参考https://blog.csdn.net/weixin_39742065/article/details/116539668

如果是null值的原因建议fine_username判断提前

and organization in (select distinct organization from m where 1=1 ${if(or(len(fine_username) == 0,fine_username = “A”),””,”and login = '" + fine_username + "'")})改成

and ${if(or(len(fine_username) == 0,fine_username = "A"),"1=1","organization in (select distinct organization from m where 1=1 and login = '" + fine_username + "')"}当然这样依旧有问题,当fine_username是其他值但是对应的organization 也是null时,应该也是查不出的。

最佳回答
0
luojian0323Lv7资深互助
发布于2023-1-10 08:23

and organization in (select distinct organization from m where 1=1 ${if(or(len(fine_username) == 0,fine_username = “A”),””,”and login = '" + fine_username + "'")})

你的这句没有加入organization为空的判断 

select * from l where 1=1 ${if(len(organization) == 0,"","and organization = '" + organization + "' and organization in (select distinct organization from m where 1=1 ${if(or(len(fine_username) == 0,fine_username = "A"),"","and login = '" + fine_username + "'")}

  • 3关注人数
  • 337浏览人数
  • 最后回答于:2023-1-10 08:44
    请选择关闭问题的原因
    确定 取消
    返回顶部