Sql 在WHERE语句中使用的是NULL

Sql 在WHERE语句中使用的是NULL,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,但是,由于@Name=NULL不正确,存储过程不知道Name的输入是NULL还是不执行Name是NULL或Name=' 这方面的快速工作是什么 我想我可以做这样的事情,但是没有更简单的方法吗 [dbo].[StoreProc1] ( @Name varchar(10) = NULL, @Age int ) SELECT * FROM TABLE WHERE Name = @Name and Age = @Age 将Name=@Name更改为: IF @Name IS NULL

但是,由于
@Name=NULL
不正确,存储过程不知道
Name
的输入是NULL还是不执行
Name是NULL
Name='

这方面的快速工作是什么

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

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

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

Name=@Name
更改为:

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

Name=@Name
更改为:

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

假设您希望在name=@name或两者都为null时获得结果,那么我将使用以下方法

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

希望这有帮助。

假设您希望在name=@name或两者都为null时获得结果,那么我将使用以下方法

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

希望这能有所帮助。

这有一个问题,NULL和“”在Name/@Name中得到等效处理这有一个问题,NULL和“”在Name/@Name中得到等效处理
[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