简单SQL语句写法

takeshe 2010-12-01 05:47:36
select*from table1 where not((ISNULL(a,'')='' and isnull(b,0)=0))
后面的条件执行很慢,not((ISNULL(a,'')='' and isnull(b,0)=0))应该怎么写这个条件才能快点?

求not((ISNULL(a,'')='' and isnull(b,0)=0))这个条件好的写法!
...全文
140 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zoeforever 2010-12-01
  • 打赏
  • 举报
回复

not((ISNULL(a,'')='' and isnull(b,0)=0))
感觉应该把ISNULL函数分开。
a<>'' or a is not null or b<>0 or b is not null
这样任何一个条件成立结果就成立,就不用去判断其他的了。
而用楼主的方法,必须都判断完才能出结果,所以会慢吧。
yigerendeC 2010-12-01
  • 打赏
  • 举报
回复
((a IS NOT NULL AND b IS NULL))
OR
((a IS NULL AND b IS NOT NULL))
这里为什么要用两个()?结果都是一样的~
叶子 2010-12-01
  • 打赏
  • 举报
回复



--就是要判断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
*/
chen8410 2010-12-01
  • 打赏
  • 举报
回复
not((ISNULL(a,'')='' and isnull(b,0)=0))

相当于:
a<>'' or b<>0

即a不为null也不为'',b不为null也不为0
我觉得你的意思应该是要判断两个同时满足吧,改成下面:
select *
from table1
where a<>'' and b<>0
「已注销」 2010-12-01
  • 打赏
  • 举报
回复
select*from table1 
where a is not null
and b is not null

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧