在WHERE语句中使用IS NULL

时间:2012-04-17 23:57:29

标签: sql sql-server sql-server-2008

 [dbo].[StoreProc1]
 (
 @Name varchar(10) = NULL,
 @Age int
 )

 SELECT * FROM TABLE WHERE Name = @Name and Age = @Age

但是,由于@Name = NULL不正确,存储过程不知道Name的输入是否为空[{1}}或Name IS NULL

快速解决这个问题的方法是什么?

我想我可以做这样的事情,但是不是更方便吗?

Name = '<value>'

4 个答案:

答案 0 :(得分:4)

[dbo].[StoreProc1]
 (
 @Name varchar(10) = NULL,
 @Age int
 )

 SELECT * FROM TABLE WHERE (Name = @Name OR COALESCE(Name, @Name) IS NULL) and Age = @Age

答案 1 :(得分:1)

Name = @Name更改为:

( Name = @Name OR Name IS NULL AND @Name IS NULL )

答案 2 :(得分:1)

假设你想在name = @Name或者它们都为null时获得结果,那么我会使用以下内容。

[dbo].[StoreProc1]
(
 @Name varchar(10) = NULL,
 @Age int
)

 SELECT * 
   FROM TABLE 
  WHERE (Name = @Name 
         OR ( Name IS NULL AND @Name IS NULL) )
    AND Age = @Age

希望这有帮助。

答案 3 :(得分:0)

SELECT * FROM TABLE WHERE ISNULL(NAME,'')=ISNULL(@NAME,'') AND AGE=@AGE