首页 > 数据库 > mysql教程 > 如何在 SQL Server 中实现条件 WHERE 子句?

如何在 SQL Server 中实现条件 WHERE 子句?

Linda Hamilton
发布: 2025-01-18 10:56:10
原创
218 人浏览过

How to Implement Conditional WHERE Clauses in SQL Server?

SQL Server 中的条件 WHERE 子句

在 SQL Server 中,条件 WHERE 子句允许您根据特定条件指定用于筛选数据的标准。在某些情况下,您可能需要一个条件 WHERE 子句来评估条件并相应地调整筛选条件。以下是有效构建和使用条件 WHERE 子句的方法。

语法

基本的条件 WHERE 子句遵循以下语法:

<code class="language-sql">WHERE 逻辑表达式 AND (CASE WHEN 条件 THEN 表达式1 ELSE 表达式2 END)</code>
登录后复制

示例

让我们考虑您提供的示例:

<code class="language-sql">SELECT
    DateAppr,
    TimeAppr,
    ...
FROM
    [test].[dbo].[MM]
WHERE
    DateDropped = 0
    AND (CASE
            WHEN @JobsOnHold = 1 THEN DateAppr >= 0
            ELSE DateAppr != 0
        END)</code>
登录后复制

此查询尝试筛选 DateDropped 为 0 且 DateAppr 满足基于 @JobsOnHold 值的特定条件的数据。但是,语法不正确。

正确的语法

要修复语法错误,请将条件表达式括在括号中:

<code class="language-sql">SELECT
    DateAppr,
    TimeAppr,
    ...
FROM
    [test].[dbo].[MM]
WHERE
    DateDropped = 0
    AND (
        (ISNULL(@JobsOnHold, 0) = 1 AND DateAppr >= 0)
        OR
        (ISNULL(@JobsOnHold, 0) != 1 AND DateAppr != 0)
    )</code>
登录后复制

解释

  • ISNULL(@JobsOnHold, 0):这确保如果 @JobsOnHold 为 NULL 或缺失,则将其视为 0。
  • OR 运算符确保条件在两种情况下都能正确工作。

@JobsOnHold 为 1 时,DateAppr 必须大于或等于 0。否则,如果 @JobsOnHold 不为 1,则 DateAppr 必须不为 0。

其他注意事项

  • 使用括号对条件进行分组和优先级排序,以提高清晰度。
  • 确保表达式的类型匹配。
  • 避免使用过多的嵌套条件,因为它们可能难以阅读和维护。

通过遵循这些准则,您可以有效地在 SQL Server 中使用条件 WHERE 子句根据特定条件筛选数据。

以上是如何在 SQL Server 中实现条件 WHERE 子句?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板