我想創建一個sql server查詢選擇。我有一個參數可以爲null或不是。 當@value爲空時我想用空值返回所有mycolumns。如果值不爲空,我想用該值返回mycolumns。sql服務器在where子句中返回有或沒有空值的行
如何最好地處理這個問題,我想:
SELECT name FROM mytable
WHERE coalesce(@value,mycolumn)=mycolumn
我有一種感覺它位於空值的處理。我該如何解決?
我想創建一個sql server查詢選擇。我有一個參數可以爲null或不是。 當@value爲空時我想用空值返回所有mycolumns。如果值不爲空,我想用該值返回mycolumns。sql服務器在where子句中返回有或沒有空值的行
如何最好地處理這個問題,我想:
SELECT name FROM mytable
WHERE coalesce(@value,mycolumn)=mycolumn
我有一種感覺它位於空值的處理。我該如何解決?
where myColumn = @value or
(myColumn is null and @value is null)
嘗試:
SELECT name FROM mytable where myColumn = @value or @value is null
SELECT T.name
FROM dbo.mytable T
WHERE
EXISTS (
SELECT @value INTERSECT SELECT T.mycolumn
)
;
第一種情況。當u傳遞一個城市的名字..
DECLARE @SearchType varchar(80); SET @SearchType = 'Alamo'; Select * From Homes where City = @SearchType OR Coalesce(@SearchType,'') = ''
第二種情況。城市空或空。
SET @SearchType = '';
在第一種情況下,您將得到城市名稱的結果。在第二種情況下,你會得到所有的結果。
這真是太棒了!忍不住就這麼說。 –
謝謝,@AndriyM!確保你檢查執行計劃。在許多情況下,這可以完美工作,但是當您開始在複雜查詢或多列中執行此操作時請謹慎。它可以工作,但你必須驗證,因爲我已經看到了它得到一個糟糕的執行計劃的情況。 – ErikE
我會小心的,謝謝! –