下面是一個存儲過程創建語句:如何在SQL查詢中使用IF-THEN-ELSE邏輯包含可選參數?
Create Procedure SearchCreatedAssignments
(@LessonName Varchar(50), @DateFrom date, @DateTo Date, @LocationCode Varchar(10))
As
BEGIN
基本上,我想編寫一個查詢,搜索基於參數值的數據庫。例如:
Select *
from dbo.test
where (LessonName = @LessonName)
AND (StartDate = @DateFrom)
AND (EndDate = @DateTo)
AND (LocationCode = @LocationCode)
很簡單吧?但是,如果這些參數中的任何一個爲空(或包含空字符串),我想從搜索中省略它們,並僅通過非空參數進行搜索。我在想這樣的事情:
--if @LocationCode is null OR @LocationCode = '' -> omit @LocationCode from the search
這顯然是僞代碼。我怎樣才能做到這一點?如果這是一項簡單的任務,請原諒我;我是SQL新手。
因此,如果參數爲空(或包含空字符串),它是否從搜索中被省略? – ic3man7019
@ ic3man7019不,它只會將該字段與其自身評估爲真。大多數答案都是一樣的。 –
@ ic3man7019我想跳進來,只是指出它會給出相同的結果,就像它被省略一樣。我使用這種做法很多,並沒有看到更好的這種查詢。而且,還有很多其他答案提出了動態sql,只要有可能,我都會避免它。使用動態sql時,請考慮對[性能和安全性](http://www.sommarskog.se/dynamic_sql.html)的影響。 – ahoxha