2011-12-02 54 views
2

我是新來的發展。在sql中,我寫了一個存儲過程,它工作正常,但我只是想確保它是以正確的方式完成的。SQL NULL條件

這裏我使用IF語句在SP檢查表中的日期列是否爲空或不是:

if ((select sdate 
     from tbla 
     where id='3') = Null) 
begin 
    some query 
end 

將這項工作的所有情況還是需要檢查「」(空)也?

+0

取決於您的數據庫 - 某些數據庫將「空」和「NULL」等同 - 其他人不這樣做。因此,爲了獲得您的情況的正確答案,我們需要知道您正在使用的**數據庫系統**及其版本。 「SQL」就是這樣 - 結構化查詢語言 - 這是**不是**數據庫系統..... –

+0

可能重複[在SQL中獲得null == null](http://stackoverflow.com/questions/ 191640/get-null-null-in-sql) – JNK

回答

4

空和空不是一回事,所以你需要單獨檢查一個空字符串。您也應該使用is null而不是= null來檢查列是否爲空。

+0

某些數據庫(如Oracle)將空和NULL視爲等效,但...... –

11

在SQL中null不等於任何東西,包括其他空值。您需要使用is null而不是=操作。

3

如果你想要顯示一些其他的表達式,只要有東西爲空,合併可能是你想要的。

Select CASE When (null = null) Then 1 Else 0 END

結果:0

Select CASE When (null is null) Then 1 Else 0 END

結果:1個

Select null + 'soemthing'

結果:空

Select Coalesce(null, 'DefaultValueIfNull')

結果:DefaultValueIfNull

添加一個空格,姓氏只有姓氏不爲空:

select FirstName + coalesce(' ' + LastName, '') From People

添加一個空格,姓氏只有姓氏不爲空,以處理空姓氏:

select FirstName + coalesce(' ' + CASE LastName When '' Then null Else LastName END, '') From People