我是新來的發展。在sql中,我寫了一個存儲過程,它工作正常,但我只是想確保它是以正確的方式完成的。SQL NULL條件
這裏我使用IF語句在SP檢查表中的日期列是否爲空或不是:
if ((select sdate
from tbla
where id='3') = Null)
begin
some query
end
將這項工作的所有情況還是需要檢查「」(空)也?
我是新來的發展。在sql中,我寫了一個存儲過程,它工作正常,但我只是想確保它是以正確的方式完成的。SQL NULL條件
這裏我使用IF語句在SP檢查表中的日期列是否爲空或不是:
if ((select sdate
from tbla
where id='3') = Null)
begin
some query
end
將這項工作的所有情況還是需要檢查「」(空)也?
空和空不是一回事,所以你需要單獨檢查一個空字符串。您也應該使用is null
而不是= null
來檢查列是否爲空。
某些數據庫(如Oracle)將空和NULL視爲等效,但...... –
在SQL中null不等於任何東西,包括其他空值。您需要使用is null
而不是=
操作。
如果你想要顯示一些其他的表達式,只要有東西爲空,合併可能是你想要的。
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
取決於您的數據庫 - 某些數據庫將「空」和「NULL」等同 - 其他人不這樣做。因此,爲了獲得您的情況的正確答案,我們需要知道您正在使用的**數據庫系統**及其版本。 「SQL」就是這樣 - 結構化查詢語言 - 這是**不是**數據庫系統..... –
可能重複[在SQL中獲得null == null](http://stackoverflow.com/questions/ 191640/get-null-null-in-sql) – JNK