sql语句关于多个可选参数,如何处理的问题

今天写项目接口看到接口文档要求带8个参数3个参数必选5个可选,研究了一下,最后博主在sql中用了AND和OR的语句解决了,不多说,看代码。

 

 判断如果没有相应的可选参数传进来,就把他设为Null

 sql语句传?表示预处理,主要看where后面的条件,注意AND和OR的优先级(AND高于OR),博主刚开始没注意到,最后用()来控制优先级

SELECT t.ProjectName,t.Cost,t.IsBuyoff,t.IsTimeOut,t.CreateDate 
FROM 
(SELECT i.ProjectName,i.Cost,p.IsBuyoff,IF(DATEDIFF(NOW() ,p.CreateTime) > c.DealthDays,1,0) IsTimeOut,i.CreateDate from project_info i JOIN project_process p on i.CurProcessID = p.ProcessID and i.ID = p.ProjectID JOIN process_info c ON i.CurProcessID = c.ID WHERE i.CurProcessID = ?) t 
WHERE 
 (? is null or t.ProjectName = ?)
 AND
 (? is null or t.Cost = ?)
 AND
 (? is null or t.IsBuyoff = ?)
 AND 
 (? is null or t.IsTimeOut = ?)
 AND
 (? is null or t.CreateDate = ?)
 LIMIT ?,?

红色框里面的是可选参数,为了与上面?对应,每个可选参数都需要传两遍。

已解决的给博主点赞,没解决的评论说出你的问题

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值