尽管我不确定为什么或是否有更清洁的方法,但我能够制作出这个并且可以使用。
基本上,我有一个ASP.NET C#服务器端,它将传递一个参数。如果参数= 0,我希望select返回所有内容
如果选择不为零,我只想返回特定的行。
#VALUE!
再次按照我想要的方式工作,我只是不知道为什么。我以为我得放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
了,但是不喜欢这样。当我意识到查询有效时,我只是对其进行测试。
答案 0 :(得分:2)
您可以使用逻辑or
运算符来模拟这种行为,或者更好的是使用in
来模拟此行为,or
是一系列;WITH cte AS
(
SELECCT 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 IN ('0', o.ID_PK)
)
SELECT * FROM cte
ed相等检查的简写:
{{1}}