Heim >Datenbank >MySQL-Tutorial >Wie kann ich eine CASE-Anweisung verwenden, um Daten in einer SQL-WHERE-Klausel dynamisch zu filtern?

Wie kann ich eine CASE-Anweisung verwenden, um Daten in einer SQL-WHERE-Klausel dynamisch zu filtern?

Susan Sarandon
Susan SarandonOriginal
2025-01-10 07:15:45362Durchsuche

How Can I Use a CASE Statement to Filter Data Dynamically in a SQL WHERE Clause?

CASE-Anweisung in SQL WHERE-Klausel

In SQL stellt die CASE-Anweisung einen bedingten Auswertungsmechanismus bereit. Es ermöglicht Ihnen, verschiedene Bedingungen anzugeben und basierend auf diesen Bedingungen entsprechende numerische Werte zurückzugeben. Dies ist besonders nützlich in WHERE-Klauseln, um Daten basierend auf verschiedenen Bedingungen zu filtern.

Nehmen Sie das folgende Szenario an: Sie müssen Daten aus einer Ansicht mit dem Namen „viewWhatever“ basierend auf den Werten des Standorttypparameters „@locationType“ und des Standort-ID-Parameters „@locationID“ abrufen. Der Standorttyp kann „Standort“, „Gebiet“ oder „Abteilung“ sein.

Verwenden Sie die CASE-Anweisung

Um diese Funktionalität mithilfe einer CASE-Anweisung in der WHERE-Klausel zu erreichen, können Sie die Abfrage wie folgt erstellen:

<code class="language-sql">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>

Beschreibung

  • Die CASE-Anweisung wird nach dem Schlüsselwort WHERE platziert.
  • Es wertet den Wert von „@locationType“ als Bedingungsvariable aus.
  • Geben Sie für jede WHEN-Klausel die Spalten an, die basierend auf dem Standorttyp auf Gleichheit mit „@locationID“ überprüft werden sollen.
  • Das Schlüsselwort END beendet die CASE-Anweisung.

Vermeiden Sie redundante Gleichheitsoperatoren

Bitte beachten Sie, dass im bereitgestellten Beispiel der Teil „=@locationID“ am Ende jeder WHEN-Klausel falsch ist. Die CASE-Anweisung selbst weist die richtige Spalte für den Vergleich mit „@locationID“ zu.

Dynamisches SQL

Wenn Ihr Standorttyp und Ihre Spaltennamen beim Schreiben der Abfrage nicht bekannt sind, können Sie mithilfe einer gespeicherten Prozedur oder dynamischen SQL spontan eine CASE-Anweisung erstellen.

Das obige ist der detaillierte Inhalt vonWie kann ich eine CASE-Anweisung verwenden, um Daten in einer SQL-WHERE-Klausel dynamisch zu filtern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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