SQLSERVER不拼接SQL如何實(shí)現(xiàn)條件查詢
遇到條件查詢,比如用戶可以在界面上選擇想要查詢的條件。
我們常用的方法是拼接SQL,如下:
declare @id int, @SQL NVARCHAR(50) = '' set @SQL = 'select * from user where 1=1 ' if @id is not null begin set @SQL = @SQL + ' and id = ' + @id end
但是如果需要查詢的參數(shù)很多,這樣的SQL調(diào)試起來相當(dāng)麻煩,我們甚至需要輸出最后拼接的SQL,然后拷貝出來單獨(dú)調(diào)試。
可以使用另外一種方法:
declare @id int, @name NVARCHAR(50) = '' select * from user where (ISNULL(@id,'') = '' or id = @id) and (ISNULL(@name,'') = '' or name = @name)
實(shí)現(xiàn)原理:
ISNULL(@id,'') = '' OR id=@id
1.假如用戶沒有選擇參數(shù)@id,則滿足左邊的條件ISNULL(@id,'') = ''
2. 假如用戶選擇了參數(shù)@id,則滿足右邊的條件id=@id,它們之間是or關(guān)系,所以滿足任意一個(gè)就行,就不需要寫IF去一個(gè)一個(gè)判斷了
到此這篇關(guān)于SQLSERVER不拼接SQL如何實(shí)現(xiàn)條件查詢的文章就介紹到這了,更多相關(guān)SQL不拼接條件查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
存儲(chǔ)過程實(shí)現(xiàn)訂單號(hào),流水單號(hào)(8位)的詳細(xì)思路
存儲(chǔ)過程實(shí)現(xiàn)訂單號(hào),流水單號(hào)是一個(gè)比較不錯(cuò)的功能,在處理訂單方面起到一個(gè)不錯(cuò)的作用;此文章是借鑒園中的各位大神的,本人只是略作修改。有不好的地方,歡迎吐槽2013-01-01淺談SQL Server中統(tǒng)計(jì)對(duì)于查詢的影響分析
SQL Server查詢分析器是基于開銷的。通常來講,查詢分析器會(huì)根據(jù)謂詞來確定該如何選擇高效的查詢路線,比如該選擇哪個(gè)索引2012-05-05SQL Server 2005 數(shù)據(jù)庫(kù)轉(zhuǎn) SQL Server 2000的方法小結(jié)
這篇文章主要介紹了SQL Server 2005 數(shù)據(jù)庫(kù)轉(zhuǎn) SQL Server 2000的方法,需要的朋友可以參考下2014-04-04SQLServer中bigint轉(zhuǎn)int帶符號(hào)時(shí)報(bào)錯(cuò)問題解決方法
用一個(gè)函數(shù)來解決SQLServer中bigint轉(zhuǎn)int帶符號(hào)時(shí)報(bào)錯(cuò)問題,經(jīng)測(cè)試可用,有類似問題的朋友可以參考下2014-09-09總結(jié)SQL執(zhí)行進(jìn)展優(yōu)化方法
談到優(yōu)化就必然要涉及索引,就像要講鎖必然要說事務(wù)一樣,建議讀者先了解一下索引。2015-08-08解決無法在unicode和非unicode字符串?dāng)?shù)據(jù)類型之間轉(zhuǎn)換的方法詳解
本篇文章是對(duì)無法在unicode和非unicode字符串?dāng)?shù)據(jù)類型之間轉(zhuǎn)換的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06SQL?Server?2008R2安裝詳細(xì)圖文教程(附安裝包)
這篇文章詳細(xì)介紹了如何安裝SQL?Server,包括下載安裝包、安裝步驟和注意事項(xiàng),文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-12-12