2013-03-19 47 views

回答

10
create table MyTable 
(
    MyColumn int 
) 

insert into MyTable default values 

declare @MyVar int 

select ISNULL(@MyVar, MyTable.MyColumn) 
from MyTable 

結果:

----------- 
NULL 
3

它將返回NULL,當然。 :)也很容易測試。這需要什麼?例如,如果您需要確保至少返回一些值,則有幾個選項。例如案例:

SELECT CASE WHEN @MyVar IS NULL 
    THEN ISNULL(MyTable.MyColumn, 'replacementvalue') 
    ELSE @MyVar 
END AS RESULT 
FROM MyTable 

我們需要更多地瞭解真正的問題在這裏。

+0

遺傳代碼,似乎這是擺在假設'MyColumn'不能爲空。由於其他地方的錯誤,「MyColumn」中的某些記錄現在具有「Null」值。這是在哪裏聲明'Where MyTable.MyColumn = ISNULL(@ MyVar,MyTable.MyColumn)'謝謝你的測試:) – robasta 2013-03-19 14:09:17

+0

Np,剛剛意識到我承諾這個迴應後,你可能只是做ISNULL(ISNULL(@MyVar ,MyTable.MyColumn),'replacementvalue')也可以執行任何方式,但是鍵入和讀取要簡單得多。但好的,GL。 :) – Kahn 2013-03-19 14:28:02

1

試試這個:-)

select ISNULL(null,null) 
6

其他人解釋發生了什麼。如果你不想要這些空值,那麼解決方案。

  • 如果表達式是在SELECT列表 - 你不想NULL出現在結果中,你可以使用COALESCE()功能,可能需要超過2個參數:

    COALESCE(@MyVar, MyTable.MyColumn, another_value) 
    
  • 如果你有它的條件,就像你在評論中提到:

    WHERE MyTable.MyColumn = ISNULL(@MyVar, MyTable.MyColumn) 
    

    你可以(假設你要替換它保持狀態TRUE@MyVar爲空,不管MyTable.MyColumn爲空或不):

    WHERE (MyTable.MyColumn = @MyVar OR @MyVar IS NULL) 
    
相關問題