Heim > Datenbank > MySQL-Tutorial > Wie kann ich eine CASE-Anweisung in einer SQL-WHERE-Klausel für die bedingte Filterung verwenden?

Wie kann ich eine CASE-Anweisung in einer SQL-WHERE-Klausel für die bedingte Filterung verwenden?

Barbara Streisand
Freigeben: 2025-01-10 06:20:41
Original
197 Leute haben es durchsucht

How Can I Use a CASE Statement in a SQL WHERE Clause for Conditional Filtering?

Switch/Case-Anweisung der WHERE-Klausel in SQL

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage