Verwendung der IF-Anweisung in der MS SQL WHERE-Klausel
Ist es möglich, eine IF-Anweisung in die WHERE-Klausel von MS SQL einzubetten? Ist beispielsweise die folgende Syntax gültig?
<code class="language-sql">WHERE IF IsNumeric(@OrderNumber) = 1 OrderNumber = @OrderNumber ELSE OrderNumber LIKE '%' + @OrderNumber + '%'</code>
Lösung:
Die obige Syntax ist ungültig. Die gleiche Funktionalität kann mit der CASE-Anweisung erreicht werden:
<code class="language-sql">WHERE OrderNumber LIKE CASE WHEN IsNumeric(@OrderNumber) = 1 THEN @OrderNumber ELSE '%' + @OrderNumber + '%' END</code>
Alternativ kann eine IF-Anweisung verwendet werden, jedoch innerhalb einer gespeicherten Prozedur oder einer anderen Kontrollflussstruktur:
<code class="language-sql">IF IsNumeric(@OrderNumber) = 1 BEGIN SELECT * FROM YourTable WHERE OrderNumber = @OrderNumber; END ELSE BEGIN SELECT * FROM YourTable WHERE OrderNumber LIKE '%' + @OrderNumber + '%'; END</code>
Es ist zu beachten, dass die Verwendung der IF-Anweisung direkt in der WHERE-Klausel nicht zulässig ist. Die CASE-Anweisung bietet eine präzisere und SQL-kompatiblere Möglichkeit, mit bedingter Logik umzugehen. Wenn Sie eine IF-Anweisung verwenden müssen, müssen Sie diese in einer gespeicherten Prozedur oder einer anderen Umgebung platzieren, die Kontrollflussanweisungen zulässt.
Das obige ist der detaillierte Inhalt vonKann ich IF-Anweisungen in MS SQL WHERE-Klauseln verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!