SQL Server条件where子句

杰森昨天

我有以下以以下内容开头的where子句:

DECLARE @Birthdate = 1

SELECT ... 
FROM ... 
JOIN ...
WHERE A.organization_id = 1
  AND LEFT(A.[first_name], 3) = LEFT(B.[first_name], 3)
  AND LEFT(A.[last_name], 3) = LEFT(B.[last_name], 3)

在此之后,我想有条件地执行其他子句。

例如:

  • 如果@Birthdate = 1然后添加AND A.[birthdate] = B.[birthdate]
  • 否则,请勿添加任何内容

我尝试了以下方法,但似乎都无法正常工作:

例1:

 AND (@Birthdate = 1 AND A.[birthdate] = B.[birthdate])

例2:

AND ((@Birthdate = 1 AND A.[birthdate] = B.[birthdate]) OR 
     (@Birthdate = 0 AND (A.[birthdate] = B.[birthdate] OR 
                          A.[birthdate] <> B.[birthdate])))

关于我在做什么错的任何建议吗?

东洋

您可以使用or来应用您的过滤器,或者在出现以下情况时仅返回所有行@Birthdate = 0

SELECT
    ...
FROM
    ...
WHERE
    (
        -- Apply the filter if applicable
        (
            @Birthdate = 1
            and A.[birthdate] = B.[birthdate]
        )
        -- Or return everything
        or @Birthdate <> 1
    )

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章