以前拼接的寫法
set @sql='?select * from table where 1=1 '
if (@addDate is not null)?
?????set @sql = @sql+' and? addDate = '+ @addDate + '? '?
if?(@name <>'' and is not null)?
????set @sql = @sql+ ' and name = ' + @name + ' '
exec(@sql)
下面是?不采用拼接SQL字符串實現多條件查詢的解決方案
第一種寫法是 感覺代碼有些冗余
if (@addDate is not null) and (@name <> '')?
??????select * from table where addDate = @addDate and name = @name
else if (@addDate is not null) and (@name ='')?
??????select * from table where addDate = @addDate
else if(@addDate is? null) and (@name <> '')?
??????select * from table where and name = @name
else if(@addDate is? null) and (@name = '')
select * from table
第二種寫法是
select * from table where (addDate = @addDate or @addDate is null) and (name = @name or @name = '')
第三種寫法是
SELECT * FROM table where
addDate = CASE @addDate IS NULL THEN addDate ELSE @addDate END,
name = CASE @name WHEN '' THEN name ELSE @name END
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
