具有NULL值的TSQL参数不会进入IF条件

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)

这是为什么?

mar*_*c_s 5

你需要使用IS NULL(不是 = NULL)

if @test IS NULL
    SELECT 1

else 
    SELECT 2
Run Code Online (Sandbox Code Playgroud)

你可以永远NULL用"正规"比较符-你总是要使用IS NULLIS NOT NULL只.

NULL真不是本身-它是没有价值的...