SQL Server存储过程:if variable = X,case where statement

问题描述 投票:1回答:1

我能够制作它并且它有效,但我不确定为什么或者是否有更清洁的方式。

基本上我有一个ASP.NET C#服务器端,它将传递一个参数。如果参数= 0,我希望select返回所有内容

如果select不是零,我想返回特定的行。

DECLARE @OrgId INT = 0 


;WITH cte AS
(
    SELECT
        o.ID_PK OrgId, ISNULL(o.Parent_ID_FK, 1) ParentId, 
        o.Organization_Name
    FROM
        DYN_Organization o
    WHERE
        o.Is_Active = 1
        AND @OrgId LIKE CASE @OrgId
                           WHEN '0' THEN '0'
                           ELSE o.ID_PK
                        END
)
SELECT * 
FROM cte  

再次,这就像我想要的那样,我只是不知道为什么。我以为我必须把%但它不喜欢那样。当我意识到它有效时,我只是在测试我的查询。

sql sql-server select
1个回答
2
投票

您可以使用逻辑or运算符模拟此行为,或者更好的是,使用in,这是一系列qazxswwied等于检查的简写:

or
© www.soinside.com 2019 - 2024. All rights reserved.