Abfrageanweisung:
Die folgende Abfrage versucht, die CASE-Anweisung in der WHERE-Klausel zu verwenden, um basierend auf den Werten von @locationType und @locationID zu filtern:
<code class="language-sql">declare @locationType varchar(50); declare @locationID int; SELECT column1, column2 FROM viewWhatever WHERE CASE @locationType WHEN 'location' THEN account_location = @locationID WHEN 'area' THEN xxx_location_area = @locationID WHEN 'division' THEN xxx_location_division = @locationID END;</code>
Fehler:
Diese Abfrage führt zu einem Syntaxfehler, da der CASE-Ausdruck einen einzelnen Rückgabewert erwartet. Verschiedene WHEN-Klauseln enthielten fälschlicherweise einen Gleichheitsvergleich (= @locationID), der kein CASE-Ausdruck war.
Lösung:
Die korrekte Syntax für die Verwendung einer CASE-Anweisung in einer WHERE-Klausel besteht darin, den Ausdruck der Zielspalte zuzuweisen:
<code class="language-sql">declare @locationType varchar(50); declare @locationID int; SELECT column1, column2 FROM viewWhatever WHERE @locationID = CASE @locationType WHEN 'location' THEN account_location WHEN 'area' THEN xxx_location_area WHEN 'division' THEN xxx_location_division END;</code>
In dieser modifizierten Abfrage gibt der CASE-Ausdruck die entsprechende Standortkennung basierend auf dem Wert von @locationType zurück. Die WHERE-Klausel vergleicht diesen Wert dann mit @locationID, um die Ergebnisse wie erwartet zu filtern.
Das obige ist der detaillierte Inhalt vonWie kann ich eine CASE-Anweisung in einer SQL-WHERE-Klausel für die bedingte Filterung verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!