首页 新闻 会员 周边 捐助

where子句中如何避免ISNULL函数?如何用另一种写法来代替ISNULL函数?

0
悬赏园豆:5 [已解决问题] 解决于 2013-04-27 16:19

DECLARE @UserName nvarchar(200),@Age int

SELECT * FROM TABLENAME

WHERE Name=ISNULL(@UserName,'') AND Age=ISNULL(@Age,0)

上面的语句,如何避免ISNULL函数?

如何用另一种写法来代替ISNULL函数可以达到同样的效果呢?

fixbug11的主页 fixbug11 | 初学一级 | 园豆:10
提问于:2013-04-27 14:45
< >
分享
最佳答案
0

在select 前把@username 和@age转了,可以解决条件中用函数的效率问题

set @username = ISNULL(@UserName,'')

set @age = isnull(@age,0)

收获园豆:5
五行缺木 | 菜鸟二级 |园豆:386 | 2013-04-27 15:05

DECLARE @myID INT

SET @myID=NULL

SELECT * FROM TABLENAME

WHERE ID=ISNULL(@myID,ID)

AND ... AND .....

如果是这样的:

WHERE ID=ISNULL(@myID,ID)

就是如果参数为NULL值得话,就让这个表达式的值等同于1=1,从而使它等同于没有加这个条件,请问这个又该如何处理呢?

fixbug11 | 园豆:10 (初学一级) | 2013-04-27 15:33

@卜广超: 这个简单阿

where id=isnull(@myid,id)改为

where

(@myid is not null and id=@myid)

or(@myid is null  and 1=1)

五行缺木 | 园豆:386 (菜鸟二级) | 2013-04-27 15:42

@五行缺木: 谢谢,貌似1=1可以去掉的哦

fixbug11 | 园豆:10 (初学一级) | 2013-04-27 16:18

@卜广超: 是可以去掉,这样写增加可读性而已。

五行缺木 | 园豆:386 (菜鸟二级) | 2013-04-27 16:21
其他回答(1)
0

where Name is null and Age=0

dotnetgeek | 园豆:482 (菜鸟二级) | 2013-04-27 14:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册