27,580
社区成员
发帖
与我相关
我的任务
分享
not((ISNULL(a,'')='' and isnull(b,0)=0))
感觉应该把ISNULL函数分开。
a<>'' or a is not null or b<>0 or b is not null
这样任何一个条件成立结果就成立,就不用去判断其他的了。
而用楼主的方法,必须都判断完才能出结果,所以会慢吧。
--就是要判断a、b不同时为null
declare @table table (a varchar(1),b int)
insert into @table
select 'm',2 union all
select 'n',null union all
select 'j',6 union all
select 'k',8 union all
select null,9 union all
select 'v',3 union all
select 'y',1 union all
select null,null
--第一种
SELECT * FROM @table
WHERE CASE wHEN a is NULL AND b IS null THEN 1 ELSE 2 END=2
--第二种
SELECT * FROM @table
WHERE
(a IS NOT NULL AND b IS NOT NULL)
OR
((a IS NOT NULL AND b IS NULL))
OR
((a IS NULL AND b IS NOT NULL))
/*
a b
---- -----------
m 2
n NULL
j 6
k 8
NULL 9
v 3
y 1
*/
not((ISNULL(a,'')='' and isnull(b,0)=0))
a<>'' or b<>0
我觉得你的意思应该是要判断两个同时满足吧,改成下面:
select *
from table1
where a<>'' and b<>0
select*from table1
where a is not null
and b is not null