多条件and查询遇到的问题

多条件and查询遇到的问题

问题描述:如下图所示:
在这里插入图片描述
在做多条件and查询时会遇到这种情况,因为是第一次做这个查询功能,所以没有想那么深,很自然地用了

select * from table where 字段1=“${}” and 字段2 = “${}” and 字段3 = “${}.......
//${}表示输入框中输入的值,只是一种表示

在测试时就发生了问题,当把查询条件全部输入值时才能查到数据,当没有全部输入值时就查不到数据。后来想了一下,多个and连接查询,查询到的数据是需要全部满足这些and条件的,当在查询界面没有全部输入查询值时,在sql层面就表现为:字段 = null 或字段 = “ ”,而在数据表中是没有这些数据存在的,所以最终的结果就是查不到数据。

后来想了一下,要完成这个功能需要做的就是当and条件的输入值为空时,就让这个and条件失效,从而不对其他and条件查询产生影响。所以小编就在and条件失效这个路子上走了好久,在网上搜了许多有关的解决思路。但碍于小编目前水平有限,大段sql我有点看不懂,所以也无法直接套用。

后来转换了思路,之前一直想的是值为空时让所属的and条件语句失效,但其实最终的目的是当该and条件值为空时不对其他and条件查询产生影响。可以在每个and条件里加个or,使每个and条件分为两种情况,值为空和值非空
如下:

select * from nych_fxjy where 1=1
and ('${创建人}' = '' or create_user = '${创建人}')
and ('${创建时间}' = '' or create_time like '${创建时间}%')
and ('${责任部门}' = '' or responsibility_depart = '${责任部门}')
and ('${风险机遇类型}' = '' or riskOrOppor_Type = '${风险机遇类型}')
and ('${风险机遇描述}' = '' or riskOrOppor_descripition like '%${风险机遇描述}%')

这样一来,当传入的值为空时,该and条件查询对其他and条件查询是不产生影响的。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值