SQL Server存储过程:如果vairable = X,则where语句

时间:2019-01-22 17:28:57

标签: sql sql-server select

尽管我不确定为什么或是否有更清洁的方法,但我能够制作出这个并且可以使用。

基本上,我有一个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 了,但是不喜欢这样。当我意识到查询有效时,我只是对其进行测试。

1 个答案:

答案 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}}