Chr*_*ian 1 t-sql null if-statement sql-server-2008
我有一个看起来像这样的查询:
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
Run Code Online (Sandbox Code Playgroud)
我知道表中的值为null,我可以看到@test正确设置为该值,因为第一个SELECT显示:
|test
1|NULL
Run Code Online (Sandbox Code Playgroud)
但是,在IF条件下,变量不会被视为NULL,因为只返回第三个SELECT,显示:
|(no column name)
1| 2
Run Code Online (Sandbox Code Playgroud)
这是为什么?
你需要使用IS NULL(不是 = NULL)
if @test IS NULL
SELECT 1
else
SELECT 2
Run Code Online (Sandbox Code Playgroud)
你可以永远比NULL用"正规"比较符-你总是要使用IS NULL或IS NOT NULL只.
而NULL真不是值本身-它是没有价值的...