Heim > Datenbank > MySQL-Tutorial > Wie kann ich eine bedingte WHERE-Klausel in SQL Server implementieren, um Daten basierend auf einem Parameter zu filtern?

Wie kann ich eine bedingte WHERE-Klausel in SQL Server implementieren, um Daten basierend auf einem Parameter zu filtern?

Linda Hamilton
Freigeben: 2025-01-18 11:11:12
Original
280 Leute haben es durchsucht

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

Bedingte WHERE-Klausel in SQL Server

In SQL Server können Sie mit der bedingten WHERE-Klausel verschiedene Filterbedingungen basierend auf bestimmten Bedingungen angeben. Dies ist nützlich, wenn Sie Daten basierend auf dem Wert eines Parameters oder einer Variablen in Abfrageergebnisse einschließen oder ausschließen müssen.

Stellen Sie sich das folgende Szenario vor:

Sie möchten Daten aus einer Tabelle mit dem Namen [MM] basierend auf den folgenden Kriterien abrufen:

  • Wenn der Parameter @JobsOnHold auf 1 gesetzt ist, werden Datensätze mit einer DateAppr-Spalte größer oder gleich 0 einbezogen.
  • Wenn der Parameter @JobsOnHold nicht auf 1 gesetzt ist, schließen Sie Datensätze ein, bei denen die Spalte „DateAppr“ nicht gleich 0 ist.

Die CASE-Anweisung, die Sie ursprünglich zu verwenden versuchten, funktioniert in diesem Fall nicht. Stattdessen können Sie die folgende bedingte WHERE-Klausel 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>
Nach dem Login kopieren

In diesem Code:

  • ISNULL-Funktion prüft, ob der Parameter @JobsOnHold leer ist. Wenn leer, wird der Wert auf 0 gesetzt (Standard).
  • Der bedingte Ausdruck im AND-Operator wendet den Filter basierend auf dem Wert des Parameters @JobsOnHold an.

Durch die Verwendung von bedingten WHERE-Klauseln können Sie flexiblere und dynamischere SQL-Abfragen schreiben, ohne dynamisches SQL oder Problemumgehungen mit if-else-Anweisungen verwenden zu müssen. Weitere Informationen zu bedingten WHERE-Klauseln finden Sie in der Dokumentation, die in der bereitgestellten Antwort verlinkt ist.

Das obige ist der detaillierte Inhalt vonWie kann ich eine bedingte WHERE-Klausel in SQL Server implementieren, um Daten basierend auf einem Parameter zu filtern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage