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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server存储过程:if variable = X,case where statement相关的知识,希望对你有一定的参考价值。

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

基本上我有一个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  

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

答案

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

or

以上是关于SQL Server存储过程:if variable = X,case where statement的主要内容,如果未能解决你的问题,请参考以下文章

sql server存储过程,常用的格式

SQL Server 是不是会短路 IF 语句?

Sql Server存储过程详解

在 SQL Server 存储过程的 where 中使用参数作为列

SQL 2005 存储过程结果集的 ODBC 执行/获取不能使用表 @variable

SQL Server 分页技术(存储过程)