where子句中的sql server null值

时间:2012-12-03 11:20:57

标签: sql-server-2008 null isnull

有一个表只有一行有4个日期列,最初所有日期值都为空,所以

if Exists(select 1 from rep_master where pacdt_1=null OR
pacdt_2=null OR
pacdt_3=null OR
pacdt_4=null)
select 0
else
select 1

这个人正在返回 1

if Exists(select 1 from rep_master where ISNULL(pacdt_1,0)=0 or
ISNULL(pacdt_2,0)=0  or
ISNULL(pacdt_3,0)=0 or
ISNULL(pacdt_4,0)=0 )
select 0
else
select 1

这个人正在返回 0 ,这是正确的结果
我无法弄清楚第一次查询有什么问题?

2 个答案:

答案 0 :(得分:3)

使用IS NULL而不是= NULL

这样:

if Exists(select 1 from rep_master 
          where pacdt_1 is null OR pacdt_2 is null OR
                pacdt_3 is null OR pacdt_4 is null)
   select 0
else
   select 1

答案 1 :(得分:0)

您不能等于null,您必须使用IS

if Exists(select 1 from rep_master where pacdt_1 IS null OR
pacdt_2 IS NULL OR
pacdt_3 IS NULL OR
pacdt_4 IS NULL)
select 0
else
select 1

要获取值不为空的位置,请使用IS NOT

if Exists(select 1 from rep_master where pacdt_1 IS NOT null OR
pacdt_2 IS NOT NULL OR
pacdt_3 IS NOT NULL OR
pacdt_4 IS NOT NULL)
select 0
else
select 1