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

如何在 SQL Server 中实现条件 WHERE 子句以根据参数过滤数据?

Linda Hamilton
发布: 2025-01-18 11:11:12
原创
279 人浏览过

How Can I Implement a Conditional WHERE Clause in SQL Server to Filter Data Based on a Parameter?

SQL Server 中的条件 WHERE 子句

在 SQL Server 中,条件 WHERE 子句允许您根据特定条件指定不同的筛选条件。当您需要根据参数或变量的值包含或排除查询结果中的数据时,这非常有用。

考虑以下场景:

您希望根据以下条件从名为 [MM] 的表中检索数据:

  • 如果 @JobsOnHold 参数设置为 1,则包含 DateAppr 列大于或等于 0 的记录。
  • 如果 @JobsOnHold 参数未设置为 1,则包含 DateAppr 列不等于 0 的记录。

您最初尝试使用的 CASE 语句在这种情况下不起作用。相反,您可以使用以下条件 WHERE 子句:

<code class="language-sql">SELECT 
    DateAppr,
    TimeAppr,
    TAT,
    LaserLTR,
    Permit,
    LtrPrinter,
    JobName,
    JobNumber,
    JobDesc,
    ActQty,
    (ActQty-LtrPrinted) AS L,
    (ActQty-QtyInserted) AS M,
    ((ActQty-LtrPrinted)-(ActQty-QtyInserted)) AS N
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(默认值)。
  • AND 运算符内的条件表达式根据 @JobsOnHold 参数的值应用筛选条件。

通过使用条件 WHERE 子句,您可以编写更灵活和动态的 SQL 查询,而无需使用动态 SQL 或涉及 if-else 语句的变通方法。有关条件 WHERE 子句的更多信息,请参阅提供的答案中链接的文档。

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

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