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:
ISNULL()
prüft, ob der Parameter @JobsOnHold
leer ist und gibt 0 zurück, wenn er leer ist. @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. 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!