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