我能够制作它并且它有效,但我不确定为什么或者是否有更清洁的方式。
基本上我有一个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