我有一個查詢,看起來像這樣:TSQL參數不進入IF條件
use [dbName]
DECLARE @profile_id int
SET @profile_id = 18
DECLARE @test int
SET @test = (SELECT user_profile_id FROM tbl_profiles WHERE id = @profile_id)
SELECT @test as test
if @test = NULL
SELECT 1
else
SELECT 2
我知道,在表中的值是空的,我可以看到@test正確正在設置爲該值,因爲第一SELECT所示:
|test
1|NULL
然而,在IF條件,因爲只有被返回所述第三選擇變量不被視爲空值,表示:
|(no column name)
1| 2
這是爲什麼?
只是爲了確認,如果我改變了連接設置,即'SET ANSI_NULL OFF',那麼我不能比較iT嗎? –
@ShantanuGupta:也許 - 但肯定不推薦**並違反SQL-92語言標準。不要依賴非標準的兼容行爲......另外,[SQL Server 2012文檔](http://msdn.microsoft.com/zh-cn/library/ms188048.aspx)提到,在不太遙遠的未來,將其設置爲'OFF'的能力將被刪除... –
感謝您的信息。我只是把它加到我的知識中。沒有打算這樣做,雖然:) –