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?
WHERE IF IsNumeric(@OrderNumber) = 1 OrderNumber = @OrderNumber ELSE OrderNumber LIKE '%' + @OrderNumber + '%'
Lösung:
Die obige Syntax ist ungültig. Die gleiche Funktionalität kann mit der CASE-Anweisung erreicht werden:
WHERE OrderNumber LIKE CASE WHEN IsNumeric(@OrderNumber) = 1 THEN @OrderNumber ELSE '%' + @OrderNumber + '%' END
Alternativ kann eine IF-Anweisung verwendet werden, jedoch innerhalb einer gespeicherten Prozedur oder einer anderen Kontrollflussstruktur:
IF IsNumeric(@OrderNumber) = 1 BEGIN SELECT * FROM YourTable WHERE OrderNumber = @OrderNumber; END ELSE BEGIN SELECT * FROM YourTable WHERE OrderNumber LIKE '%' + @OrderNumber + '%'; END
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!