次のようなクエリがあります。
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
テーブルの値がnullであることを知っています。最初のSELECTが次のように表示されているため、@testがその値に正しく設定されていることがわかります。
|test
1|NULL
ただし、IF条件では、3番目のSELECTのみが返されるため、変数はNULLとして扱われず、次のようになります。
|(no column name)
1| 2
何故ですか?