CASE-Anweisung und verschachtelter Fall in SQL Server: T-SQL-Beispiel

โšก Intelligente Zusammenfassung

CASE ist ein bedingter Ausdruck in SQL Server, der einen Wert basierend auf der ersten Bedingung zurรผckgibt, die als wahr ausgewertet wird. Er bietet einfache und durchsuchbare Formen sowie die Mรถglichkeit zur Verschachtelung innerhalb von IFโ€ฆELSE, UPDATE und ORDER BY.

  • ๐Ÿงญ Bedingter Wert: Ein CASE-Ausdruck gibt einen Wert zurรผck, der davon abhรคngt, welche WHEN-Bedingung als erste als wahr ausgewertet wird.
  • 1๏ธโƒฃ Einfacher Fall: Simple CASE vergleicht einen Ausdruck mit einer Liste von Werten und fรผhrt fรผr jedes WHEN eine Gleichheitsprรผfung durch.
  • ๐Ÿ”Ž Gesuchter Fall: Die CASE-Suche wertet fรผr jedes WHEN einen separaten booleschen Ausdruck aus und unterstรผtzt dabei Bereiche und Ungleichheitsoperatoren.
  • โž– ELSE ist optional: Wenn keine WHEN-Klausel รผbereinstimmt und ELSE weggelassen wird, gibt der CASE-Ausdruck NULL zurรผck.
  • ๐Ÿช† Verschachtelung: CASE kann innerhalb eines anderen CASE und innerhalb einer IFโ€ฆELSE-Anweisung verschachtelt werden, um mehrstufige Logik zu ermรถglichen.
  • ๐Ÿ”ง Jenseits von SELECT: Neben SELECT arbeitet CASE mit UPDATE- und ORDER BY-Klauseln zusammen, um bedingte Aktualisierungen und Sortierungen zu steuern.

CASE-Anweisung und verschachtelte CASE-Anweisungen in SQL Server mit T-SQL-Beispielen

รœberblick รผber den Fall im wirklichen Leben!

Auch im realen Leben handeln wir je nach den Gegebenheiten unterschiedlich. Um dies weiter zu verdeutlichen, betrachten wir das folgende Beispiel:

  • Wenn Flugtickets weniger als 100 $ kosten, werde ich Los Angeles besuchen.
  • Wenn die Flugtickets zwischen 100 und 200 Dollar kosten, werde ich New York besuchen.
  • Wenn die Flugtickets zwischen 200 und 400 Dollar kosten, werde ich nach Europa reisen.
  • Ansonsten werde ich lieber einen nahegelegenen Touristenort besuchen.

Betrachten wir nun, wie wir den Zustand und die Handlung aus dem obigen Beispiel getrennt kategorisieren kรถnnen:

Bedingungen โ€“ Flugtickets Aktionen werden nur ausgefรผhrt, wenn die Bedingung WAHR ist.
Less als $ 100 Besuchen Sie Los Angeles
Zwischen $ 100 bis $ 200 Besuchen Sie New York
Zwischen $ 200 bis $ 400 Besuchen Sie Europa
Keine der oben genannten Bedingungen erfรผllt In der Nรคhe gelegener Touristenort

Im obigen Beispiel sehen wir, dass das Ergebnis der verschiedenen Bedingungen eine separate Handlung bestimmt. Beispielsweise wird der Besucher New York nur dann besuchen, wenn das Flugticket zwischen 100 und 200 Dollar kostet. Ebenso verhรคlt es sich mit dem MS SQL Die CASE-Anweisung bietet auรŸerdem die Mรถglichkeit, je nach Ergebnis verschiedener Bedingungen unterschiedliche T-SQL-Anweisungen auszufรผhren.

Was ist die CASE-Anweisung in SQL Server?

CASE-Anweisung in SQL Server ist die Erweiterung der ANSONSTEN Im Gegensatz zu IFโ€ฆELSE, wo maximal eine Bedingung zulรคssig ist, ermรถglicht CASE dem Benutzer, mehrere Bedingungen anzuwenden, um unterschiedliche Aktionen in MS SQL auszufรผhren. Es gibt einen entsprechenden Wert zurรผck, der der vom Benutzer definierten Bedingung zugeordnet ist.

Lasst uns lernen, wie man CASE verwendet. SQL und dessen Konzept in den folgenden Abschnitten. In MS SQL gibt es zwei Arten von CASE-Anweisungen:

  • Einfacher Fall
  • Gesucht CASE

Einfacher Fall

Die Syntax fรผr den einfachen Fall

CASE <Case_Expression>
     WHEN Value_1 THEN Statement_1
     WHEN Value_2 THEN Statement_2
     .
     .
     WHEN Value_N THEN Statement_N
     [ELSE Statement_Else]   
END AS [ALIAS_NAME]

Hier:

  • Der Parameter Case_Expression bezeichnet den Ausdruck, der schlieรŸlich mit Value_1, Value_2 usw. verglichen wird.
  • Die Parameter Statement_1, Statement_2โ€ฆ bezeichnen die Anweisungen, die ausgefรผhrt werden, wenn Case_Expression = Value_1, Case_Expression = Value_2 usw.
  • Kurz gesagt, die Bedingung ist, ob Case_Expression = Value_N gilt, und die Aktion ist die Ausfรผhrung von Statement_N, wenn das obige Ergebnis WAHR ist.
  • ALIAS_NAME ist optional und ist der Aliasname fรผr das Ergebnis der SQL Server CASE-Anweisung. Er wird hauptsรคchlich verwendet, wenn CASE in der SQL Server SELECT-Klausel verwendet wird.

Regeln fรผr den einfachen Fall

  • Simple Case erlaubt nur einen Gleichheitsvergleich von Case_Expression mit Value_1 bis Value_N.
  • Der Case_Expression wird der Reihe nach mit einem Wert verglichen, beginnend mit dem ersten Wert, also Wert_1. Im Folgenden wird der Ausfรผhrungsansatz erlรคutert:
  • Wenn Case_Expression รคquivalent zu Value_1 ist, werden weitere WHENโ€ฆTHEN-Anweisungen รผbersprungen und die CASE-Ausfรผhrung wird sofort ENDE.
  • Wenn der Ausdruck nicht mit Wert_1 รผbereinstimmt, wird er mit Wert_2 auf ร„quivalenz verglichen. Dieser Vergleich wird so lange fortgesetzt, bis ein passender Wert aus der Menge von Wert_1, Wert_2 usw. gefunden wird.
  • Wenn keine รœbereinstimmung gefunden wird, geht die Steuerung zur ELSE-Anweisung รผber und Statement_Else wird ausgefรผhrt.
  • ELSE ist optional.
  • Wenn ELSE nicht vorhanden ist und Case_Expression mit keinem der Werte รผbereinstimmt, wird NULL angezeigt.

Das folgende Diagramm veranschaulicht den Ausfรผhrungsablauf eines einfachen Falls:

Flussdiagramm, das zeigt, wie eine einfache CASE-Anweisung jeden WHEN-Wert der Reihe nach auswertet.

Beispiele

Angenommen, wir haben eine Tabelle mit dem Namen 'Guru99' mit zwei Spalten, Tutorial_ID und Tutorial_name, und vier Zeilen, wie unten dargestellt. Wir werden dieses 'GuruTabelle 99 in den folgenden Beispielen.

Musteranfrage GuruTabelle 99 mit den Spalten Tutorial_ID und Tutorial_name und vier Zeilen

Abfrage 1: SIMPLE CASE mit der Option NO ELSE

SELECT Tutorial_ID, Tutorial_name,
CASE Tutorial_name
	WHEN 'SQL' THEN 'SQL is developed by IBM'
	WHEN 'PL/SQL' THEN 'PL/SQL is developed by Oracle Corporation.'
	WHEN 'MS-SQL' THEN 'MS-SQL is developed by Microsoft Corporation.'
END AS Description
FROM Guru99

Ergebnis: Das folgende Diagramm veranschaulicht den Ablauf eines EINFACHEN FALLS OHNE ANDERE Fร„LLE.

Ergebnis eines einfachen CASE-Blocks ohne ELSE-Anweisung, der Folgendes anzeigt: Description fรผr jeden Tutorial_name

Anfrage 2: SIMPLE CASE mit der ELSE-Option

SELECT Tutorial_ID, Tutorial_name,
CASE Tutorial_name
	WHEN 'SQL' THEN 'SQL is developed by IBM'
	WHEN 'PL/SQL' THEN 'PL/SQL is developed by Oracle Corporation.'
	WHEN 'MS-SQL' THEN 'MS-SQL is developed by Microsoft Corporation.'
	ELSE 'This is NO SQL language.'
END AS Description
FROM Guru99

Ergebnis: Das folgende Diagramm erlรคutert den Ausfรผhrungsablauf eines einfachen CASE mit ELSE.

Ergebnis einer einfachen CASE-Anweisung mit ELSE, die den Standardtext fรผr nicht รผbereinstimmende Zeilen zurรผckgibt.

Gesucht CASE

Die Syntax fรผr die Suche im GroรŸ-/Kleinschreibung

CASE 
     WHEN <Boolean_Expression_1> THEN Statement_1
     WHEN <Boolean_Expression_2> THEN Statement_2
     .
     .
     WHEN <Boolean_Expression_N> THEN Statement_N
     [ELSE Statement_Else]   
END AS [ALIAS_NAME]

Hier:

  • Der Parameter Boolean_Expression_1โ€ฆ bezeichnet den Ausdruck, der auf WAHR oder FALSCH ausgewertet wird.
  • Die Parameter Statement_1, Statement_2โ€ฆ bezeichnen die Anweisungen, die ausgefรผhrt werden, wenn das entsprechende Ergebnis von Boolean_Expression_1, Boolean_Expression_2 WAHR ist.
  • Kurz gesagt, die Bedingung ist Boolean_Expression_1โ€ฆ und die Aktion ist die Ausfรผhrung von Statement_N, wenn der obige Boolean_Expression_1 WAHR ist.
  • ALIAS_NAME ist optional und ist der Aliasname fรผr das Ergebnis der CASE-Anweisung. Er wird hauptsรคchlich verwendet, wenn CASE in der SELECT-Klausel verwendet wird.

Regeln fรผr den gesuchten Fall

  • Im Gegensatz zum einfachen Fall ist der Suchfall nicht auf einen einfachen Gleichheitsvergleich beschrรคnkt, sondern erlaubt auch einen booleschen Ausdruck.
  • Die Booleschen Ausdrรผcke werden der Reihe nach ausgewertet, beginnend mit dem ersten Booleschen Ausdruck, d. h. Boolean_Expression_1. Im Folgenden wird der Ausfรผhrungsansatz beschrieben:
  • Wenn Boolean_Expression_1 TRUE ist, werden weitere WHENโ€ฆTHEN-Anweisungen รผbersprungen und die CASE-Ausfรผhrung wird sofort beendet.
  • Wenn Boolean_Expression_1 den Wert FALSE hat, wird Boolean_Expression_2 auf den Wert TRUE geprรผft. Dieser Vorgang wird so lange fortgesetzt, bis einer der beiden Ausdrรผcke TRUE ergibt.
  • Wenn keine รœbereinstimmung gefunden wird, geht die Steuerung zur ELSE-Anweisung รผber und Statement_Else wird ausgefรผhrt.
  • Wie im einfachen Fall ist ELSE auch im gesuchten Fall optional.
  • Wenn ELSE nicht vorhanden ist und keiner der booleschen Ausdrรผcke TRUE zurรผckgibt, wird NULL angezeigt.

Das folgende Diagramm veranschaulicht den Ausfรผhrungsablauf des gesuchten Falls:

Flussdiagramm, das zeigt, wie ein Suchfall (CASE) jeden booleschen Ausdruck der Reihe nach auswertet.

Beispiele

Abfrage 1: Gesuchter Fall mit der Option NO ELSE

SELECT Tutorial_ID, Tutorial_name,
CASE 
 	WHEN Tutorial_name = 'SQL' THEN 'SQL is developed by IBM'
	WHEN Tutorial_name = 'PL/SQL' THEN 'PL/SQL is developed by Oracle Corporation.'
	WHEN Tutorial_name = 'MS-SQL' THEN 'MS-SQL is developed by Microsoft Corporation.'
END AS Description
FROM Guru99

Ergebnis: Das folgende Diagramm erlรคutert den Ausfรผhrungsablauf des GESUCHTEN FALLS OHNE SONSTIGE FALL.

Ergebnis einer Suche mit CASE ohne ELSE, bei der jeder Tutorial_name mit einem Tutorial_name abgeglichen wird. DescriptIon

Anfrage 2: GESUCHTER FALL mit der ELSE-Option

SELECT Tutorial_ID, Tutorial_name,
CASE 
	WHEN Tutorial_name = 'SQL' THEN 'SQL is developed by IBM'
	WHEN Tutorial_name = 'PL/SQL' THEN 'PL/SQL is developed by Oracle Corporation.'
	WHEN Tutorial_name = 'MS-SQL' THEN 'MS-SQL is developed by Microsoft Corporation.'
	ELSE 'This is NO SQL language.'
END AS Description
FROM Guru99

Ergebnis: Das folgende Diagramm erlรคutert den Ausfรผhrungsablauf des SEARCHED CASE mit ELSE.

Ergebnis einer CASE-Suche mit ELSE, die den Standardtext fรผr Nicht-SQL-Sprachen zurรผckgibt.

Unterschied zwischen den Ausfรผhrungsansรคtzen: EINFACHER und SUCHE-FALL

Werfen wir einen Blick auf das folgende Beispiel des EINFACHEN FALLS:

SELECT Tutorial_ID, Tutorial_name,
CASE Tutorial_name
	WHEN 'SQL' THEN 'SQL is developed by IBM'
	WHEN 'PL/SQL' THEN 'PL/SQL is developed by Oracle Corporation.'
	WHEN 'MS-SQL' THEN 'MS-SQL is developed by Microsoft Corporation.'
	ELSE 'This is NO SQL language.'
END AS Description
FROM Guru99

Hierbei ist โ€žTutorial_nameโ€œ Teil des CASE-Ausdrucks in SQL. AnschlieรŸend wird der Wert von โ€žTutorial_nameโ€œ mit jedem WHEN-Wert, d. h. โ€žSQLโ€œ, verglichen, bis โ€žTutorial_nameโ€œ mit einem WHEN-Wert รผbereinstimmt.

Im Gegenteil, das Beispiel SEARCH CASE enthรคlt keinen CASE-Ausdruck:

SELECT Tutorial_ID, Tutorial_name,
CASE 
 	WHEN Tutorial_name = 'SQL' THEN 'SQL is developed by IBM'
	WHEN Tutorial_name = 'PL/SQL' THEN 'PL/SQL is developed by Oracle Corporation.'
	WHEN Tutorial_name = 'MS-SQL' THEN 'MS-SQL is developed by Microsoft Corporation.'
END AS Description
FROM Guru99

Hier hat jede WHEN-Anweisung ihren eigenen bedingten booleschen Ausdruck. Jeder boolesche Ausdruck, z. B. Tutorial_name = 'SQL'โ€ฆ, wird auf WAHR/FALSCH ausgewertet, bis der erste boolesche Ausdruck WAHR ergibt.

Unterschied zwischen einfachem und gesuchtem Fall

Einfacher Fall Durchsuchter Fall
Dem Schlรผsselwort CASE folgt unmittelbar der CASE-Ausdruck und es steht vor der WHEN-Anweisung.

Z.B:
FALL
WHEN Wert_1 DANN Aussage_1โ€ฆ

Dem Schlรผsselwort CASE folgt die WHEN-Anweisung, und zwischen CASE und WHEN steht kein Ausdruck.

Z.B:
FALL, WENN DANN Anweisung_1โ€ฆ

Im einfachen Fall existiert fรผr jede WHEN-Anweisung ein Wert. Diese Werte (Wert_1, Wert_2โ€ฆ) werden nacheinander mit einem einzigen CASE-Ausdruck verglichen. Das Ergebnis wird fรผr jede WHEN-Anweisung auf die Bedingung WAHR/FALSCH geprรผft.

Z.B:
FALL
WHEN Wert_1 DANN Aussage_1โ€ฆ
WHEN Wert_2 DANN Aussage_2โ€ฆ

In einem Suchfall existiert fรผr jede WHEN-Anweisung ein Boolescher Ausdruck. Diese Booleschen Ausdrรผcke (Boolescher_Ausdruck_1, Boolescher_Ausdruck_2โ€ฆ) werten die Bedingung WAHR/FALSCH fรผr jede WHEN-Anweisung aus.

Z.B:
CASE
WANN DANN Aussage_1โ€ฆ
WANN DANN Aussage_2โ€ฆ

Ein einfacher Fall unterstรผtzt nur einen Gleichheitsvergleich, d. h. ob CASE_Expression = VALUE_1, VALUE_2โ€ฆ

Z.B:
FALL WENN Wert_1 DANN Anweisung_1โ€ฆ
Im obigen Beispiel besteht die einzige vom System durchgefรผhrte Operation darin, zu prรผfen, ob Case_Expression = Value_1.

Mit Boolean_Expression_N unterstรผtzt ein Suchfall jede Operation, die einen booleschen Wert ergibt. Dazu gehรถren die Operatoren โ€žgleichโ€œ und โ€žungleichโ€œ.

Z.B:
FALL, WENN DANN Anweisung_1โ€ฆ
Im obigen Beispiel kann Boolean_Expression_1 sowohl den Gleichheitsoperator als auch den Ungleichheitsoperator enthalten, wie z. B. A = B, A != B.

Verschachtelter CASE: CASE in IF ELSE

Wir kรถnnen CASE innerhalb einer IFโ€ฆELSE-Anweisung verwenden. Wir deklarieren einen Variable Fรผr das Flugticket und die Verzweigung nach dessen Wert. Nachfolgend finden Sie den Beispiel-MS-SQL-Code:

DECLARE @Flight_Ticket int;
SET @Flight_Ticket = 190;
IF @Flight_Ticket > 400
   PRINT 'Visit Nearby Tourist Location';
ELSE 
BEGIN
    SELECT
	CASE 
	WHEN @Flight_Ticket BETWEEN 0 AND 100 THEN 'Visit Los Angeles'
	WHEN @Flight_Ticket BETWEEN 101 AND 200 THEN 'Visit New York'
	WHEN @Flight_Ticket BETWEEN 201 AND 400 THEN 'Visit Europe'
	END AS Location	
END

Im obigen Beispiel ist die CASE-Anweisung in der IFโ€ฆELSE-Anweisung verschachtelt. Zuerst wird die IF-Anweisung ausgefรผhrt. Ist die CASE-Bedingung in SQL Server โ€žfalseโ€œ, wird die ELSE-Anweisung ausgefรผhrt. Der ELSE-Teil enthรคlt eine verschachtelte CASE-Anweisung in SQL. Abhรคngig vom Wert des Flugtickets wird eines der folgenden Ergebnisse angezeigt:

  • Das System gibt die Meldung โ€žBesuchen Sie ein nahegelegenes Touristenzielโ€œ aus, wenn die Flugtickets mehr als 400 Dollar kosten.
  • Das System druckt โ€žVisit Los Angelesโ€œ, wenn die Flugtickets zwischen 0 und 100 Dollar kosten.
  • Das System druckt โ€žVisit New Yorkโ€œ, wenn die Flugtickets zwischen 101 und 200 Dollar kosten.
  • Das System druckt โ€žVisit Europeโ€œ, wenn die Flugtickets zwischen 201 und 400 US-Dollar kosten.

Das folgende Ergebnis zeigt die Position, die zurรผckgegeben wird, wenn der verschachtelte CASE-Zweig innerhalb des ELSE-Zweigs ausgefรผhrt wird:

Ergebnis einer CASE-Anweisung innerhalb einer IFโ€ฆELSE-Anweisung, die den Besuchsort fรผr das Ticket ausgibt.

Verschachtelter CASE: CASE innerhalb von CASE

In SQL kรถnnen wir CASE-Anweisungen innerhalb anderer CASE-Anweisungen verwenden. Nachfolgend finden Sie ein Beispiel fรผr MS-SQL-Code:

DECLARE @Flight_Ticket int;
SET @Flight_Ticket = 250;
SELECT
CASE 
WHEN @Flight_Ticket >= 400 THEN 'Visit Nearby Tourist Location.'
WHEN @Flight_Ticket < 400 THEN 
    	CASE 
		WHEN @Flight_Ticket BETWEEN 0 AND 100 THEN 'Visit Los Angeles'
		WHEN @Flight_Ticket BETWEEN 101 AND 200 THEN 'Visit New York'
		WHEN @Flight_Ticket BETWEEN 201 AND 400 THEN 'Visit Europe'
		END	
END AS Location

Im obigen Beispiel ist eine CASE-Anweisung in einer anderen CASE-Anweisung verschachtelt. Das System fรผhrt zuerst die รคuรŸere CASE-Anweisung aus; falls Flight_Ticket < 400 $ ist, wird die innere CASE-Anweisung ausgefรผhrt. Der zurรผckgegebene Standort folgt denselben Ticketkategorien wie im vorherigen Beispiel, sodass ein Ticket fรผr 250 $ in den Bereich von 201 $ bis 400 $ fรคllt und โ€žVisit Europeโ€œ zurรผckgibt.

Das untenstehende Ergebnis zeigt den vom inneren CASE fรผr ein Ticket im Wert von 250 $ zurรผckgegebenen Standort:

Ergebnis eines in einem anderen Fall verschachtelten Falls, der โ€žVisit Europe for a 250 ticketโ€œ zurรผckgibt.

FALL mit UPDATE

Nehmen wir erneut an, wir hรคtten das 'GuruTabelle 99 mit zwei Spalten und vier Zeilen, wie unten dargestellt:

GuruTabelle 99 vor dem CASE UPDATE, die die ursprรผnglichen Werte von Tutorial_Name anzeigt

Wir kรถnnen CASE mit UPDATE verwenden. Unten finden Sie den Beispiel-MS-SQL-Code:

UPDATE Guru99
SET Tutorial_Name = 
	(
	CASE
	WHEN Tutorial_Name = 'SQL' THEN 'Structured Query language.'
	WHEN Tutorial_Name = 'PL/SQL' THEN 'Oracle PL/SQL'
	WHEN Tutorial_Name = 'MSSQL' THEN 'Microsoft SQL.'
	WHEN Tutorial_Name = 'Hadoop' THEN 'Apache Hadoop.'
	END
	)

Im obigen Beispiel wird CASE in der UPDATE-Anweisung verwendet. Abhรคngig vom Wert von Tutorial_Name wird die Spalte Tutorial_Name mit dem Wert der THEN-Anweisung aktualisiert:

  • Wenn Tutorial_Name = 'SQL', dann aktualisiere Tutorial_Name auf 'Structured Query language'.
  • Wenn Tutorial_Name = 'PL/SQL', dann aktualisiere Tutorial_Name auf 'Oracle PL/SQL'.
  • Wenn Tutorial_Name = 'MSSQL', dann aktualisiere Tutorial_Name auf 'Microsoft SQL'.
  • Wenn Tutorial_Name = 'Hadoop', dann aktualisiere Tutorial_Name auf 'Apache Hadoop'.

Die Ausfรผhrung der Anweisung aktualisiert die รผbereinstimmenden Zeilen, wie unten dargestellt:

Ausfรผhrungsergebnis der CASE UPDATE-Anweisung auf dem Guru99 Tisch

Lassen Sie uns die Frage stellen:GuruTabelle 99 zur รœberprรผfung der aktualisierten Werte:

GuruTabelle 99 nach dem CASE UPDATE, die die neuen Werte fรผr Tutorial_Name anzeigt

CASE mit Order by

Wir kรถnnen CASE mit ORDER BY verwenden. Nachfolgend finden Sie ein Beispiel fรผr MS-SQL-Code:

Declare @Order Int;
Set @Order = 1
Select * from Guru99 order by 
CASE 
	WHEN @Order = 1 THEN Tutorial_ID
	WHEN @Order = 2 THEN Tutorial_Name
	END
DESC

Hier wird CASE mit ORDER BY verwendet. @Order ist auf 1 gesetzt, und da der erste boolesche WHEN-Ausdruck zu TRUE ausgewertet wird, wird Tutorial_ID fรผr die ORDER BY-Bedingung ausgewรคhlt. Das Ergebnis wird unten angezeigt:

Ergebnis von ORDER BY mit einem CASE-Ausdruck, der sortiert GuruTabelle 99 nach Tutorial_ID

Interessante Fakten!

  • CASE kann sowohl in einer anderen CASE-Anweisung als auch in einer IFโ€ฆELSE-Anweisung verschachtelt werden.
  • Zusรคtzlich zu SELECT kann CASE auch mit anderen SQL-Klauseln wie UPDATE und ORDER BY verwendet werden.

Hรคufig gestellte Fragen

IIF() ist eine Kurzform fรผr einen CASE-Ausdruck mit zwei mรถglichen Ergebnissen: Er gibt einen Wert zurรผck, wenn die Bedingung wahr ist, und einen anderen, wenn sie falsch ist. Ein vollstรคndiger CASE-Ausdruck ist flexibler und kann mehrere WHEN-Bedingungen in einer einzigen Anweisung prรผfen.

Ja. Da CASE einen Wert zurรผckgibt, kann es in einer SELECT-Liste, einer WHERE-Klausel, einer HAVING-Klausel und einer GROUP BY-Klausel verwendet werden. In einer WHERE-Klausel ermรถglicht CASE die Anwendung unterschiedlicher Filterlogik abhรคngig von den Werten anderer Spalten.

Ja. Einen CASE-Ausdruck innerhalb von SUM(), COUNT() oder AVG() fรผhrt eine bedingte Aggregation durch und summiert oder zรคhlt nur die Zeilen, die den jeweiligen WHEN-Bedingungen entsprechen. Diese Technik wird hรคufig verwendet, um Pivot-Tabellen-รคhnliche รœbersichtsberichte zu erstellen.

COALESCE und ISNULL geben nur den ersten Wert einer Liste zurรผck, der nicht NULL ist. Ein CASE-Ausdruck ist umfassender: Er wertet beliebige boolesche Bedingungen oder Wertvergleiche aus und gibt das Ergebnis des ersten Zweigs zurรผck, der zutrifft.

Ein CASE-Ausdruck gibt einen einzelnen Datentyp zurรผck. SQL Server ermittelt diesen anhand der Datentypprioritรคt jedes THEN- und ELSE-Ergebnisses. Daher sollten alle Zweige kompatible Typen zurรผckgeben, um Konvertierungsfehler zu vermeiden.

Ja. Ein CASE-Ausdruck kann in der SELECT-Anweisung einer Sicht und an beliebiger Stelle innerhalb einer gespeicherten Prozedur, Funktion oder eines Triggers verwendet werden. Die gleiche Ausdruckssyntax funktioniert fรผr alle diese Objekte.

Ja. GitHub-Copilot Sie kรถnnen einfache und durchsuchte CASE-Ausdrรผcke, einschlieรŸlich verschachtelter CASE-Anweisungen und CASE-Anweisungen innerhalb von UPDATE, anhand einer natรผrlichsprachlichen Eingabeaufforderung erstellen. รœberprรผfen Sie vor der Ausfรผhrung der Abfrage stets die WHEN-Bedingungen, die Verzweigungsreihenfolge und die ELSE-Behandlung.

KI- und maschinelle Lernassistenten รผbersetzen Regeln in einfacher Sprache in einfache oder durchsuchte CASE-Ausdrรผcke, schlagen fehlende WHEN-Zweige vor und kennzeichnen รœberschneidungen.ping oder unerreichbare Bedingungen. Der Entwickler prรผft jeden Vorschlag vor der Bereitstellung auf Richtigkeit.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: