首頁 > 資料庫 > mysql教程 > 如何在 SQL Server 中實作條件 WHERE 子句?

如何在 SQL Server 中實作條件 WHERE 子句?

Linda Hamilton
發布: 2025-01-18 10:56:10
原創
220 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板