我有一个如下所示的查询:
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,我可以看到@test正确设置为该值,因为第一个SELECT显示:
|test
1|NULL
但是,在IF条件下,变量不会被视为NULL,因为只返回第三个SELECT,显示:
|(no column name)
1| 2
为什么?
答案 0 :(得分:5)
您需要使用IS NULL
(不 = NULL
)
if @test IS NULL
SELECT 1
else
SELECT 2
您可以从不将NULL
与“常规”比较运算符进行比较 - 始终必须使用IS NULL
或IS NOT NULL
仅
NULL
本身并不是值 - 它是值的缺席 ...
答案 1 :(得分:1)
使用IS NULL
。而不是:
if @test = NULL
SELECT 1
else
SELECT 2
试试这个:
if @test IS NULL
SELECT 1
else
SELECT 2
答案 2 :(得分:0)
为什么不使用条件(id = @profile_id AND @profile_id IS NOT NULL )
SELECT user_profile_id FROM tbl_profiles WHERE (id = @profile_id AND @profile_id IS NOT NULL)