我想创建一个存储过程,它在过程的 WHERE 部分有一个可选参数。我的 C# 代码可以为此过程传入 null 或有效的产品 ID。这里是:

declare @ProductID int
set @ProductID = null

select
    *
from
    Products
where
    Name like '%Hasbro%'
    if @ProductID is not null
        begin
            and ProductID = @ProductID
        end

此代码不起作用。如果产品 ID 为空,我希望它只查找名称为“孩之宝”的产品。如果产品 ID 不为空,我希望它查找名称为“孩之宝”的产品以及匹配的产品 ID。

谢谢!

更新:

这是工作代码。谢谢大家帮我弄到这个!
declare @ProductID int
set @ProductID = null

select
    *
from
    Products
where
    Name like '%Hasbro%'
    and (( @ProductID is null ) or ( @ProductID is not null and ProductID = @ProductID ))

最佳答案

这也应该有效...

select
    *
from
    Products
where
    Name like '%Hasbro%' and
    (
      ( @ProductID is null ) or
      ( @ProductID is not null and ProductID = @ProductID )
    )

关于c# - 如何在 SQL Server 中包含可选的 Null 参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6512996/

10-15 20:41