Heim >Datenbank >MySQL-Tutorial >Wie implementiert man bedingte WHERE-Klauseln in SQL Server?

Wie implementiert man bedingte WHERE-Klauseln in SQL Server?

Linda Hamilton
Linda HamiltonOriginal
2025-01-18 10:56:10221Durchsuche

How to Implement Conditional WHERE Clauses in SQL Server?

Bedingte WHERE-Klausel in SQL Server

In SQL Server können Sie mit der bedingten WHERE-Klausel Kriterien zum Filtern von Daten basierend auf bestimmten Bedingungen angeben. In einigen Fällen benötigen Sie möglicherweise eine bedingte WHERE-Klausel, um die Bedingung auszuwerten und den Filter entsprechend anzupassen. Hier erfahren Sie, wie Sie bedingte WHERE-Klauseln effektiv erstellen und verwenden.

Grammatik

Die grundlegende bedingte WHERE-Klausel folgt der folgenden Syntax:

<code class="language-sql">WHERE 逻辑表达式 AND (CASE WHEN 条件 THEN 表达式1 ELSE 表达式2 END)</code>

Beispiel

Betrachten wir das von Ihnen bereitgestellte Beispiel:

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

Diese Abfrage versucht, Daten zu filtern, für die DateDropped 0 ist und DateAppr eine bestimmte Bedingung basierend auf dem @JobsOnHold-Wert erfüllt. Allerdings ist die Syntax falsch.

Korrekte Grammatik

Um Syntaxfehler zu beheben, schließen Sie den bedingten Ausdruck in Klammern ein:

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

Erklärung

  • ISNULL(@JobsOnHold, 0): Dadurch wird sichergestellt, dass @JobsOnHold, wenn es NULL ist oder fehlt, als 0 behandelt wird.
  • Der
  • OR-Operator stellt sicher, dass die Bedingung in beiden Fällen korrekt funktioniert.

Wenn @JobsOnHold 1 ist, muss DateAppr größer oder gleich 0 sein. Andernfalls, wenn @JobsOnHold nicht 1 ist, darf DateAppr nicht 0 sein.

Andere Hinweise

  • Verwenden Sie Klammern, um Bedingungen für mehr Klarheit zu gruppieren und zu priorisieren.
  • Stellen Sie sicher, dass die Ausdruckstypen übereinstimmen.
  • Vermeiden Sie die Verwendung zu vieler verschachtelter Bedingungen, da diese schwer zu lesen und zu pflegen sein können.

Wenn Sie diese Richtlinien befolgen, können Sie bedingte WHERE-Klauseln in SQL Server effektiv verwenden, um Daten basierend auf bestimmten Kriterien zu filtern.

Das obige ist der detaillierte Inhalt vonWie implementiert man bedingte WHERE-Klauseln in SQL Server?. 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