SQL Grundkurs 1: Die Sprache erlernen

Bedingungen mit CASE - einfache Syntax

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Was das Wenn() in Excel ist, das ist CASE in SQL - nur weitaus komfortabler in der Anwendung. Sehen Sie in diesem Video, wie Sie Bedingungen in Ihre Ausdrücke bringen. Generell gilt: Alles, was mit WHERE verwendbar ist, ist es auch mit CASE.

Transkript

In diesem Video möchte ich Ihnen zeigen, wie Sie Bedingungen in Ausdrücken verwenden. Dazu können Sie Kriterien definieren gemäß dem, was wir auch in der WHERE-Klausel verwenden. D.h. alles was wir in der WHERE-Klausel einsetzen können, alle Operatoren, alle Vergleichsoperatoren, größer, kleiner, LIKE, BETWEEN usw., mehrere Kriterien mit UND und ODER, all das können Sie hier verwenden. Im Prinzip ist es das, was Sie von Excel her kennen werden, wenn Sie eine Bedingung, einen Ausdruck haben, verwenden Sie "WHEN" mit irgendeiner Bedingung dann umsonst. Der Nachteil in Excel ist lediglich der, wenn Sie mehr als zwei Varianten abdecken möchten, müssen Sie "WHEN" ineinander schachteln und in der Regel wird es sehr unübersichtlich. Das "CASE" in ANSI SQL ist dagegen sehr strukturiert und gut lesbar. Ich möchte Ihnen das anhand eines kleinen Beispiels zeigen. Und zwar gibt es eine einfache Syntaxvariante. Die einfache Syntaxvariante basiert darauf, dass man nur eine Variante auf unterschiedliche Ausprägungen hin prüft. Wenn wir einen kurzen Blick in unsere Personaltabelle werfen, wir holen uns die Personalnummer, den Nachnamen, den Vornamen und die Spalte "Geschlecht" und zwar nur jene bei denen das Austritts- datum nicht vergeben, also "NULL" ist. Wir sehen nun, dass wir ja hier das Kürzel "1" und "2" für "männlich" und "weiblich" vergeben haben. Jetzt wäre es doch wesentlich schöner, hier anstelle von "1" und "2", "Herr" und "Frau" angezeigt zu bekommen. Das können wir mit folgender Bedingung realisieren, "WHEN Geschlecht=1, dann schreib hin Frau, sonst wenn es 2 ist, dann Herr und für den Fall, dass es nicht ausgefüllt ist, schreib hin Unbekannt", zum Beispiel Was würde das jetzt hier bedeuten? Ich möchte das hier zwischen Personalnummer und Nachname einfügen. Deshalb mache ich hier für die bessere Lesbarkeit gleich einmal eine Zeilenschaltung. Mit "CASE WHEN" wird diese Anweisung eingeleitet. In der einfachen Syntaxvariante wird hier nur ein Sachverhalt verglichen, deshalb nehme ich hier direkt die Spalte "Geschlecht" mit hinein. "CASE Spalte WHEN1" und hinter dem "WHEN" wird nun der Wert ergänzt, der in dem Fall, dass die Bedingung erfüllt ist, angezeigt wird. In dem Fall möchten wir hier "Frau" stehen haben. Wegen der Lesbarkeit werde ich jetzt typischerweise auch hier wieder eine Zeilenschaltung verwenden und typischerweise rückt man das hier auch dann ein, dass man sagt "WHEN 2 THEN Herr" und hier, das ist der Vorteil gegenüber der Variante in Excel, ich kann jetzt beliebig viele "WHEN" hintereinander folgen lassen, ohne dass ich hier schachteln muss und die Übersichtlichkeit bleibt hier sehr gut gewahrt. Optional kann ich ein "WHEN" verwenden, optional heißt, sie können das auch weglassen, wird dann keine der Bedingungen erfüllt sein, wird für diesen Wert dann "NULL" zurück gegeben. In unserem Fall wollen wir das nicht, sondern wir wollen hinschreiben "undef." für undefiniert z.B. und ganz wichtig ist, dass das "CASE" immer mit einem "END" abgeschlossen werden muss, sonst kriegen wir einen Syntaxfehler. "AS" und ich vergebe hier "Anrede" als Aliasnamen. Damit habe ich jetzt hier die erste Variante abgeschlossen und führe diese Anweisung aus. Hier habe ich jetzt natürlich einen Fehler gemacht, ich habe hier nicht aufgepasst was ich hingeschrieben habe, ich habe es zwar erwähnt, aber dann nicht getan, hier muss jetzt natürlich ein "ELSE" und kein "WHEN" hinschreiben. Ihnen wird das wahrscheinlich schon vorher aufgefallen sein, dass ich das nicht richtig gemacht habe, bessere das jetzt gleich aus. Das ist ja auch typischerweise in der Praxis oft so. Man vertippt sich und dann aufgrund der Fehlermeldungen kommt man drauf, dass man was ändern muss. Ich habe das jetzt hier ausgebessert und starte die Anweisung noch einmal und ich bekomme jetzt hier das Ergebnis. Sie sehen hier die Anrede "Herr Obermann" geändert "Herr Konstantin Martin", aber "Frau Bernadette Hille" zum Beispiel Die Variante "undef.", undefiniert kommt hier in diesem Fall nicht zu tragen, weil immer eine Bedingung erfüllt ist. In der einfachen Syntax, werden also die Werte eines Ausdrucks verglichen, in dem Fall des Inhaltes der Spalte "Geschlecht", der Vergleich entspricht damit der Form auf "ist gleich". Die einfache Syntax kann nicht mehrere Kriterien prüfen, sie kann nicht andere Vergleichsoperatoren wie größer, kleiner, BETWEEN usw. verwenden, d.h. sie ist von der Funktionalität her eher eingeschränkt. Aber diese Variante ist natürlich ANSI kompatibel und funktioniert auch bei den anderen Systemen auf die gleiche Art und Weise. Ich kopiere das hier einmal hinüber in unseren Oracle-Editor und führe die Anweisung hier aus und ich bekomme hier dasselbe Ergebnis, genauso wie wenn ich das Ganze hier in unseren Editor für den Microsoft SQL Server kopiere. Das ist eine ANSI kompatible Anweisung, die hier immer dasselbe Ergebnis liefert.

SQL Grundkurs 1: Die Sprache erlernen

Arbeiten Sie sich in die Grundlagen der Datenbanksprache SQL am Beispiel von Microsoft SQL Server, Oracle und MySQL ein und lassen Sie sich die praktische Nutzung erklären.

14 Std. 40 min (112 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!