Heim >Datenbank >MySQL-Tutorial >Wie implementiert man bedingte WHERE-Klauseln 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. 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
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!