DECLARE @UserName nvarchar(200),@Age int
SELECT * FROM TABLENAME
WHERE Name=ISNULL(@UserName,'') AND Age=ISNULL(@Age,0)
上面的语句,如何避免ISNULL函数?
如何用另一种写法来代替ISNULL函数可以达到同样的效果呢?
在select 前把@username 和@age转了,可以解决条件中用函数的效率问题
set @username = ISNULL(@UserName,'')
set @age = isnull(@age,0)
DECLARE @myID INT
SET @myID=NULL
SELECT * FROM TABLENAME
WHERE ID=ISNULL(@myID,ID)
AND ... AND .....
如果是这样的:
WHERE ID=ISNULL(@myID,ID)
就是如果参数为NULL值得话,就让这个表达式的值等同于1=1,从而使它等同于没有加这个条件,请问这个又该如何处理呢?
@卜广超: 这个简单阿
where id=isnull(@myid,id)改为
where
(@myid is not null and id=@myid)
or(@myid is null and 1=1)
@五行缺木: 谢谢,貌似1=1可以去掉的哦
@卜广超: 是可以去掉,这样写增加可读性而已。
where Name is null and Age=0