SQLSERVER不拼接SQL如何實現條件查詢
遇到條件查詢,比如用戶可以在界面上選擇想要查詢的條件。
我們常用的方法是拼接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
但是如果需要查詢的參數很多,這樣的SQL調試起來相當麻煩,我們甚至需要輸出最后拼接的SQL,然后拷貝出來單獨調試。
可以使用另外一種方法:
declare @id int, @name NVARCHAR(50) = '' select * from user where (ISNULL(@id,'') = '' or id = @id) and (ISNULL(@name,'') = '' or name = @name)
實現原理:
ISNULL(@id,'') = '' OR id=@id
1.假如用戶沒有選擇參數@id,則滿足左邊的條件ISNULL(@id,'') = ''
2. 假如用戶選擇了參數@id,則滿足右邊的條件id=@id,它們之間是or關系,所以滿足任意一個就行,就不需要寫IF去一個一個判斷了
到此這篇關于SQLSERVER不拼接SQL如何實現條件查詢的文章就介紹到這了,更多相關SQL不拼接條件查詢內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SQL 雙親節(jié)點查找所有子節(jié)點的實現方法
下面小編就為大家?guī)硪黄猄QL 雙親節(jié)點查找所有子節(jié)點的實現方法。小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-05-05
如何安裝 SQL Server 2016及SQL Server Man
這篇文章主要介紹了如何安裝 SQL Server 2016及SQL Server Management Studio安裝配置,本文通過圖文并茂的形式給大家介紹的非常詳細,需要的朋友可以參考下2024-12-12
針對Sqlserver大數據量插入速度慢或丟失數據的解決方法
這篇文章主要介紹了針對Sqlserver大數據量插入速度慢或丟失數據的解決方法,很有實用價值,需要的朋友可以參考下2014-07-07

