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

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

但是,由于@Name = NULL不正确,存储过程不知道输入是否Name为 Null 或 Not to doName IS NULLName = '<value>'

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

我想我可以做这样的事情,但没有更简单的方法吗?

IF @Name IS NULL 
BEGIN 
  SELECT * FROM TABLE WHERE NAME IS NULL AND AGE=@AGE
END
ELSE
BEGIN
  SELECT * FROM TABLE WHERE NAME=@NAME AND AGE=@AGE
END
4

4 回答 4

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

 SELECT * FROM TABLE WHERE (Name = @Name OR COALESCE(Name, @Name) IS NULL) and Age = @Age
于 2012-04-18T00:00:30.517 回答
1

改为Name = @Name

( Name = @Name OR Name IS NULL AND @Name IS NULL )
于 2012-04-18T00:00:18.910 回答
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

希望这可以帮助。

于 2012-04-18T02:52:54.993 回答
0
SELECT * FROM TABLE WHERE ISNULL(NAME,'')=ISNULL(@NAME,'') AND AGE=@AGE
于 2012-04-18T00:48:34.330 回答