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