巧用SQL中case when語句實現模糊查詢
使用SQL中case when語句,可以實現我們需要的模糊查詢,下面為您介紹SQL case when語句實現模糊查詢的腳本,希望對您學習SQL中case when語句的使用有所啟示。
我們在進行項目開發(fā)中,經常會遇到多條件模糊查詢的需求。對此,我們常見的解決方案有兩種:一是在程序端拼接SQL字符串,根據是否選擇了某個條件,構造相應的SQL字符串;二是在數據庫的存儲過程中使用動態(tài)的SQL語句。其本質也是拼接SQL字符串,不過是從程序端轉移到數據庫端而已。
這兩種方式的缺點是顯而易見的:一是當多個條件每個都可為空時,要使用多個if語句進行判斷;二是拼接的SQL語句容易產生SQL注入漏洞。
最近寫數據庫存儲過程的時候經常使用case when 語句,正好可以用這個語句解決一下以上問題。以SQL中的NorthWind數據庫為例,我要操作的是其中的Employees表,該表中默認數據如下:
使用如下腳本來查詢表中數據:
- 1 DECLARE @FirstName NVARCHAR(10),
 - 2 @LastName NVARCHAR(20);
 - 3 SELECT @FirstName = '',
 - 4 @LastName = '';
 - 5 SELECT *
 - 6 FROM Employees c
 - 7 WHERE CHARINDEX(
 - 8 (
 - 9 CASE
 - 10 WHEN @FirstName = '' THEN FirstName
 - 11 ELSE @FirstName
 - 12 END
 - 13 ),
 - 14 FirstName
 - 15 ) > 0
 - 16 AND CHARINDEX(
 - 17 (CASE WHEN @LastName = '' THEN LastName ELSE @LastName END),
 - 18 LastName
 - 19 ) > 0
 
【編輯推薦】















 
 
 

 
 
 
 