Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

SQL Grundkurs 2: Aufgaben und Lösungen

Beispiel 2: Zeichenfolge in Ausdruck

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Lassen Sie für alle Lieferanten die Firmenbezeichnung und den Ort ausgeben. Zusätzlich zeigen Sie als erste Spalte die Lieferantennummer an.

Transkript

Starten wir in diesem Video nun mit dem zweiten Beispiel. Dies ist eine kleine Erweiterung des ersten Beispiels. Auch hier sollen Lieferanten mit Ihrem Ort und Ihrer Lieferantennummer ausgegeben werden, aber diesmal sollen die Inhalte der beiden Spalten, firma1 und firma2, so wie Sie hier im Ergebnis sehen, zu einer einzelnen Spalte zusammengefasst werden. Dies bedeutet, dass wir hier eine berechnete Spalte mit einem Ausdruck einbauen müssen. Außerdem soll diese Spalte mit einem schönen Aliasnamen, hier zum Beispiel lieferant, versehen werden. Besonders zu berücksichtigen ist bei diesem Beispiel, dass hier NULL-Werte in der Spalte firma2 auftreten können. Nicht bei allen Firmen ist ein Wert hier eingetragen. Welches Problem könnte hier auftreten? Ich habe hier eine andere Lösungsvariante und hier sehen Sie, dass manche keinen Lieferantennamen aufweisen, das sind all jene, die in der zweiten Spalte einen NULL-Wert stehen haben, und bei Berechnungen muss man ja in SQL immer beachten, dass ein Wert plus ein NULL-Wert gemeinsam in einem Ausdruck immer gesamt NULL ergibt, das muss abgefangen werden, das ist also auch Aufgabe in diesem Beispiel. Und noch etwas soll dabei berücksichtigt werden, ich gehe noch einmal zur nächsten Lösungsvariante, und wir sehen jetzt hier zum Beispiel die Gardena AG. Zwischen den zwei Spalten mussten wir ja jedes Mal ein Leerzeichen einfügen, damit die Inhalte der beiden Spalten nicht direkt aufeinander picken. Ich ziehe jetzt mal dieses Ergebnis hier einfach herauf, damit wir sehen, was hier entstanden ist. Wir sehen, dass hier dieses Leerzeichen, das zwischen den beiden Spalten steht, erhalten bleibt. Im Idealfall sollte das nicht passieren, sondern wenn es wirklich nur einen Eintrag in der ersten Spalte gibt, dann soll auch nur das, das Gesamtergebnis bilden. Das ist sozusagen die Zusatzaufgabenstellung. Jetzt können Sie natürlich sagen, ein zusätzliches Leerzeichen am Ende stört nicht wirklich, das ist korrekt so, aber es gibt auch andere Konstellationen, wo andere Zeichen in der Mitte dann auftreten, und sehr wohl das Ergebnis stören. Pausieren Sie nun das Video und lösen Sie die Aufgabe. Wenn Sie damit fertig sind, fahren Sie mit dem Video fort und sehen Sie sich meine Musterlösung an. Ich hoffe, Sie konnten dieses Beispiel lösen, und wir betrachten uns nun gemeinsam das Ergebnis. Fangen wir hier mit dem Microsoft SQL Server an. Diese erste Variante zeigt noch kleine Mängel, sie nimmt nämlich lediglich den Inhalt der Spalte firma1, hängt mit einem Leerzeichen dazwischen, die firma2 dazu, und versieht das Ganze mit einem Aliasnamen. Füllen wir diese Anweisung aus, erhalten wir das was wir vorhin gesehen haben, als nicht ganz zufriedenstellende Lösung, denn etwas und etwas plus NULL ergibt in SQL auch gesamt NULL. Das wollen wir nicht. Um NULL-Werte zu unterdrücken gibt es ja entsprechende Funktionen, die Funktion trägt beim Microsoft SQL Server den Namen ISNULL, diese Funktion bekommt zwei Parameter, nämlich den Wert und den Ersatzwert, der zum Tragen kommt, wenn der Wert selber einen NULL-Wert enthält. Wenn also in der Spalte firma2 ein NULL-Wert enthalten ist, wird dieser durch einen Leerstring, eine leere Zeichenfolge hier, ersetzt. Das führt dann dazu, dass wir nun für alle Lieferanten einen Namen bekommen, allerdings mit dem hier minimalen Schönheitsfehler, dass bei den Lieferanten ohne einen Eintrag in der zweiten Spalte, hinten ein Leerzeichen drangehängt wird. Beim SQL Server können wir das sehr einfach dadurch lösen, indem wir einen kleinen Trick anwenden, wenn Sie diese zwei Lösungsvarianten vergleichen, sehen Sie als einzigen Unterschied, dass dieser Teil hier, den ich jetzt hier mit der Maus markiert habe, in die ISNULL Funktion hineinverschoben wurde. Dies bewirkt nun, dass, sollte in der firma2 kein Eintrag enthalten sein, der NULL-Wert sozusagen dieses Leerzeichen mitfrisst, mitschluckt. Und erst danach werden beide durch einen Leerstring ersetzt. Und das führt nun zu dem gewünschten Ergebnis, nämlich dass sauber alle Lieferanten hier gemeinsam dargestellt werden. In MySQL weicht das Ergebnis ein wenig ab. Mit Ergebnis meine ich nicht das dargestellte Ergebnis, sondern die Umsetzung der Lösung. Und zwar werden in MySQL mehrere Strings, Texte oder Charakter, wie sie auch genannt werden, mit der Funktion CONCAT zusammengefügt. Hier werden also alle Werte, die aneinandergefügt werden, mit einem Komma getrennt angegeben. Egal wie viele Werte das sind, alle werden in dieser einen Funktion zusammengefasst. Wir haben hier drei Werte, die firma1, dass dazwischen angefügte Leerzeichen, sowie die firma2. Das führt, wenn wir es ausführen, zum selben Ergebnis wie vorhin beim Microsoft SQL Server, nämlich alle lieferanten mit einem NULL-Wert in der zweiten Spalte, bekommen keinen Eintrag. Also müssen wir auch hier Null-Werte unterdrücken, und das können wir mit der Funktion IFNULL machen, die unterscheidet sich eigentlich nur durch den Buchstaben F anstelle des S, hier von der Lösung des Microsoft SQL Servers, die Syntax und die Logik der Funktion ist sonst absolut ident. Also verwenden wir hier die IFNULL-Funktion, um sozusagen auch dann ein Ergebnis zu bekommen, wenn hier keine firma2 befüllt ist. Nun bekommen wir für alle Lieferanten einen Namen. Möchten wir auch hier das zusätzliche Leerzeichen hinter dem Namen, das wir hier jetzt gar nicht so sehen, direkt entfernt haben, haben wir verschiedene Möglichkeiten. Natürlich könnten wir auch mit einer TRIM-Funktion, Sie kennen das vielleicht als Glätten von Excel - überschüssige Leerzeichen entfernen. Die Variante gibt es als TRIM, die links und rechts oder RTRIM, die nur rechts überschüssige Leerzeichen entfernt. Das Ergebnis ändert sich jetzt hier nicht direkt, aber wenn wir jetzt hier das Ergebnis, wie vorhin kurz gesehen, herauskopieren, ich verwende hier Copy Field und hier oben einfügen, sehen wir, dass hier hinten kein Leerzeichen enthalten ist. wie es bei der vorigen Variante gewesen wäre. Natürlich gibt es manchmal auch alternative Lösungen, man könnte analog zur vorhergesehenen Variante, auch hier sozusagen, dass IFNULL erweitern, dazu müssten wir noch ein CONCAT hier in der IFNULL-Funktion verwenden, um das selbe Lösungsprinzip, wie beim SQL Server anzuwenden, IFNULL und hier konkatenieren, man nennt das auch - daher kommt der Name der Funktion - CONCAT - wie konkatenieren, diese zwei Spalten firma2 und der Ausdruck für ein Leerzeichen, und für den Fall, dass er NULL ist, gemeinsam nämlich NULL ist, wird er durch ein Leerstring ersetzt. Und bevor ich jetzt diese Anweisung ausführe - vielleicht ist Ihnen aufgefallen, wenn Sie mitgedacht haben, dass mir hier ein kleiner Fehler unterlaufen ist, und zwar sehen Sie hier, beim CONCAT ist die Reihenfolge von firma2 und den Leerzeichen vertauscht. Die Leerzeichen müssen hier natürlich vor die firma2 kommen, weil sie ja zwischen firma1 und 2 eingefügt werden - so habe ich das nun korrigiert, und jetzt können wir diese Anweisung ausführen, und sie liefert uns hier ein sauberes Ergebnis, wie wir es auch vom Microsoft SQL Server schon kennen, also auch diese Variante ist hier eine saubere Lösung. Und zum Abschluss betrachten wir uns noch die Lösung unter Oracle. Hier haben wir eine etwas andere Lösung. Oracle hat nämlich einen eigenen Operator auch, um Texte zu verketten, oder eben konkatenieren, das ist die doppelte Pipe, das ist anstelle des Plus-Symbols beim SQL Server, verwenden wir hier die Pipe, um zwei Spalten zusammenzufügen. Zusätzlich erfüllt diese Pipe noch eine Sonderfunktion, nämlich sie ist eine Ausnahme von der Regel, dass wenn NULL-Werte in einem Ausdruck verwendet werden, das Gesamtergebnis NULL ist. Dieses Symbol, dieses Konkatenierungs-Symbol, unterbindet nämlich sozusagen das Mitsterben durch NULL-Werte. Und deshalb haben wir hier immer ein Ergebnis, auch wenn in der firma2 nichts enthalten ist. Dafür haben wir aber immer das zusätzliche Leerzeichen am Ende. Ich mache das hier kurz sichtbar, indem ich es hier aus dem Ergebnis hinaufziehe, und jetzt sehen wir, dass wir hier ein überschüssiges Leerzeichen enthalten haben. Nachdem wir die NVL-Funktion, das ist das Pendant zur ISNULL und IFNULL bei Oracle, hier nicht einsetzen können, verwenden wir die Funktion RTRIM, auch TRIM wäre hier möglich, um das zusätzliche Leerzeichen am Ende wieder zu entfernen. Im Ergebnis hier unten sehen wir keinen Unterschied, aber im Vergleich, wenn ich wieder die Gardena AG hier hinaufziehe, dann haben wir jetzt hier am Ende, kein überschüssiges Leerzeichen. Sie haben in diesem Beispiel gesehen, wie wir mehrere Texte in einem Ausdruck zusammenfügen können, und wie wir damit umgehen, wenn NULL-Werte enthalten sind. Entweder werden NULL-Werte mit der ISNULL-Funktion beim SQL Server unterdrückt, mit der IFNULL-Funktion unter MySQL, oder beim Konkatenieren bei Oracle tritt das Problem nicht auf. Wir werden noch andere Berechnungen sehen, mathematische Berechnungen, wo wir auch NULL-Werte haben, und hier werden wir das Pendant NVL von Oracle, dann einsetzen.

SQL Grundkurs 2: Aufgaben und Lösungen

Vertiefen Sie Ihre SQL-Kenntnisse. In diesem Workshop erhalten Sie zahlreiche Beispielaufgaben, die Sie selbst lösen können. Anschließend zeigt Ihnen der Trainer die Lösung.

7 Std. 41 min (61 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieses Training setzt SQL-Kenntnisse voraus, wie sie beispielsweise in „SQL lernen und anwenden“ vermittelt werden.

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!