Heim >Datenbank >MySQL-Tutorial >Wie implementiert man eine bedingte WHERE-Klausel in SQL Server ohne dynamisches SQL?

Wie implementiert man eine bedingte WHERE-Klausel in SQL Server ohne dynamisches SQL?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-18 11:06:09757Durchsuche

How to Implement a Conditional WHERE Clause in SQL Server Without Dynamic SQL?

Bedingte WHERE-Klausel in SQL Server

Frage:

Wie implementiert man eine bedingte WHERE-Klausel in SQL Server, ohne dynamisches SQL zu verwenden oder mehrere Abfragen mit unterschiedlichen Klauseln zu erstellen?

Antwort:

Sie können die folgenden Methoden verwenden:

<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>

In dieser Abfrage:

    Die Funktion
  • ISNULL() prüft, ob der Parameter @JobsOnHold leer ist und gibt 0 zurück, wenn er leer ist.
  • Der bedingte Ausdruck in Klammern prüft den Wert des Parameters @JobsOnHold. Wenn der Wert 1 ist, muss die Spalte DateAppr größer oder gleich 0 sein. Wenn der Wert nicht 1 ist, darf die Spalte DateAppr nicht gleich 0 sein.
  • Der
  • AND-Operator stellt sicher, dass beide Bedingungen erfüllt sind.

Mit diesem Ansatz können Sie eine einzelne Abfrage und eine bedingte WHERE-Klausel verwenden, um Ergebnisse basierend auf dem Wert eines Parameters zu filtern. Dies ist eine effizientere und präzisere Möglichkeit, solche Abfragen zu schreiben, als mehrere Abfragen oder dynamisches SQL zu verwenden.

Das obige ist der detaillierte Inhalt vonWie implementiert man eine bedingte WHERE-Klausel in SQL Server ohne dynamisches SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn