SQLSERVER不拼接SQL如何實現(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調試起來相當麻煩,我們甚至需要輸出最后拼接的SQL,然后拷貝出來單獨調試。
可以使用另外一種方法:
declare @id int, @name NVARCHAR(50) = '' select * from user where (ISNULL(@id,'') = '' or id = @id) and (ISNULL(@name,'') = '' or name = @name)
實現(xiàn)原理:
ISNULL(@id,'') = '' OR id=@id
1.假如用戶沒有選擇參數(shù)@id,則滿足左邊的條件ISNULL(@id,'') = ''
2. 假如用戶選擇了參數(shù)@id,則滿足右邊的條件id=@id,它們之間是or關系,所以滿足任意一個就行,就不需要寫IF去一個一個判斷了
到此這篇關于SQLSERVER不拼接SQL如何實現(xiàn)條件查詢的文章就介紹到這了,更多相關SQL不拼接條件查詢內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
淺談SQL Server中統(tǒng)計對于查詢的影響分析
SQL Server查詢分析器是基于開銷的。通常來講,查詢分析器會根據(jù)謂詞來確定該如何選擇高效的查詢路線,比如該選擇哪個索引2012-05-05SQL Server 2005 數(shù)據(jù)庫轉 SQL Server 2000的方法小結
這篇文章主要介紹了SQL Server 2005 數(shù)據(jù)庫轉 SQL Server 2000的方法,需要的朋友可以參考下2014-04-04SQLServer中bigint轉int帶符號時報錯問題解決方法
用一個函數(shù)來解決SQLServer中bigint轉int帶符號時報錯問題,經(jīng)測試可用,有類似問題的朋友可以參考下2014-09-09解決無法在unicode和非unicode字符串數(shù)據(jù)類型之間轉換的方法詳解
本篇文章是對無法在unicode和非unicode字符串數(shù)據(jù)類型之間轉換的解決方法進行了詳細的分析介紹,需要的朋友參考下2013-06-06SQL?Server?2008R2安裝詳細圖文教程(附安裝包)
這篇文章詳細介紹了如何安裝SQL?Server,包括下載安裝包、安裝步驟和注意事項,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2024-12-12