SQL Grundkurs 1: Die Sprache erlernen

Weitere Beispiele mit Zeichenfolgen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Nur Übung macht den Meister, daher sehen Sie in diesem Video weitere Beispiele für Ausdrücke mit Zeichenfolgen.

Transkript

Diesen Film möchte ich dazu nutzen, um mit Ihnen anhand eines weiteren Beispiels Zeichenfolgenausdrücke zu üben. Außerdem möchte ich Ihnen ein paar Tipps im Umgang mit Zeichenfolgen geben. Dazu möchte ich folgendes Beispiel verwenden: Wir finden in unserer Personaltabelle Vorname und Nachname unserer Mitarbeiter. Nun wollen wir daraus eine Emailadresse generieren. Die Emailadresse sollte so aufgebaut werden, dass sie mit dem ersten Buchstaben des Vornamens beginnt, dann von einem Punkt gefolgt und dann vom Nachnamen. Beides soll natürlich in Kleinbuchstaben umgewandelt werden. Außerdem sollen Zeichen, die in einer Emailadresse nichts verloren haben, wie z.B. Umlaute oder ein Hochkomma wie hier beim Namen O'Bryan entfernt werden. Abschließend soll hinter dem reinen Namen noch die Domäne für die Emailadresse ergänzt werden. Wie gehen wir dazu vor? Wir benötigen dazu natürlich wieder Zeichenfolgefunktionen. Zuerst einmal möchte ich den ersten Buchstaben des Vornamens extrahieren. Dazu verwende ich die Funktion "LEFT", übergebe ihr als Parameter den Spaltennamen "Vornamen", und da wir nur ein Zeichen davon haben möchten, eben diese Länge 1. Dieses soll von einem Punkt gefolgt werden, daher diesen Punkt als fixen Text unter "einfachen" Hochkomma. Anschließend soll noch der Nachname folgen, also "PLUS Nachname". Entweder ergänzen wir an dieser Stelle schon den Domänennamen oder wir machen es zu einem späteren Zeitpunkt. Auf jeden Fall soll das Ganze mit der Funktion "LOWER" noch in Kleinbuchstaben umgewandelt werden. Und der Domänennamen ist fix, z.B. "video2brain.com", den füge ich hier hinten einfach an. Betrachten wir uns einfach mal - nennen Sie es mal Zwischenergebnis: Und wir sehen, dass im Prinzip das nicht so schlecht ausschaut, aber wir haben jetzt hier natürlich Umlaute oder z.B. ein Hochkomma, die haben in einer Emailadresse nichts verloren. Wie können wir diese eliminieren? Z.B. mit der Zeichenfolgefunktion "REPLACE". Ich verwende diese jetzt in diesem Suchtext. Die Funktion "REPLACE" hat drei Parameter, nämlich: Worin suche ich? Als zweiten Parameter: Wonach suche ich? In dem Fall nach einem "ö". Und, wodurch möchte ich es ersetzen? Durch ein "oe". Nicht vergessen darf ich natürlich die schließende Klammer, die jetzt hier noch dazu kommt. Nun habe ich hier eine schließende Klammer und hier sehen Sie auch, wie verdammt man aufpassen muss - an der falschen Stelle gesetzt, weil diese beendet ja die "LOWER"-Funktion. Das ist schön, dass der Editor mir das markiert, das ergänzt man dann besser, wo diese Klammer dazugehört. Die schließt "LOWER" ab und diese hier letztendlich dann noch einmal die "REPLACE"-Funktion, so sieht das sauber aus. Ich führe diese Anweisungen wieder aus, und schon sehen wir das aus dem "Gerhard Mörtel" nun "G.Moertel" geworden ist. Jetzt haben wir natürlich die Situation, dass wir nicht nur das "ö", sondern auch z.B. "ü", "ä", "ß" und Hochkomma ersetzen wollen. Leider kann ich mit einem Einsatz von "REPLACE" nur ein Zeichen oder eine Suchzeichenfolge jeweils ersetzen. Das heißt, es bleibt uns in einem SQL-Ausdruck nicht erspart, hier z.B. die "REPLACE"-Funktion mehrmals zu schachteln. Das macht dann den Unterschied auch von SQL zu einer Programmiersprache aus, weil in der Programmiersprache könnte ich z.B. mit einem Schleifenkonstrukt mehrere Dinge hintereinander austauschen. Das habe ich hier nicht in SQL SQL ist eine reine Anweisungssprache deshalb müssen wir hier schachteln, egal wie lieb oder unangenehm uns das Ganze ist. Ich kopiere mir dazu nun diesen Ausdruck einmal, um nun das zweite "REPLACE", z.B. für "ü" zu ergänzen. Damit das nicht allzu unübersichtlich wird, versuche ich jetzt durch Einrückungen die Lesbarkeit hier doch etwas zu erhalten. Das heißt, ich werde das nächste "REPLACE", das ich um den Ausdruck herum setze, in eine eigene Zeile hier setzen, werde dieses "REPLACE" hier einrücken; werde dann hier den Suchausdruck "ü" in eine eigene Zeile, und das wird der Ersatzwert "ue" sein. Nicht vergessen darf ich natürlich wieder die schließende Klammer. Wie Sie jetzt hier diese Funktionen ineinander schachteln, bleibt natürlich Ihnen überlassen. Das ist auch Geschmackssache, wie Sie das besser lesen können. Sie können natürlich auch auf diese Art und Weise das Ganze realisieren. Sie können auch diesen Teil, auch wenn sie nicht vorkommt, auch in den vorderen Ausdrucksteil verschieben. Dann könnten Sie das hier vielleicht noch etwas einheitlicher machen. Und das schaut gar nicht einmal so schlecht aus. Testen wir aus, ob es auch funktioniert. Wir haben jetzt einerseits hier den "Gerhard Mörtel", das ist in Ordnung, und hier den "Klaus Nürnberger", "K.Nuernberger", auch das ist korrekt. Wir müssten jetzt dasselbe einerseits noch für den dritten verbliebenen Umlaut, das "ä" realisieren, und auch für das "ß" und natürlich zumindest auch für dieses Hochkomma, das beim "O'Bryan" vorkommt. Wir werden das jetzt natürlich nicht bis zum letzten Punkt ausführen - ich möchte hier ja nicht erreichen, dass ich Sie aufgrund der Komplexität des Ausdrucks verwirre - sondern möchte Ihnen zeigen, wie man mit Strings umgeht. Deshalb werden wir hier abschließend noch das Hochkomma vom Mike O'Bryan ersetzen. Dazu vielleicht folgenden Hinweis: Wie gehen wir in SQL mit einfachem Hochkomma innerhalb einer Zeichenfolge um? Ich kann das sichtbar machen, indem ich hier z.B. sage "SELECT 'O'Brian' AS name;". Sie merken schon, der Editor kann damit nicht umgehen, das Ganze funktioniert natürlich nicht. Das heißt, wenn ich das ausführe, kriege ich natürlich eine Fehlermeldung: "Kein schließendes Anführungszeichen nach der Zeichenfolge". Denn dieses Hochkomma, das jetzt innerhalb des Textes steht, wird natürlich vom Interpreter als "Beenden" des ersten Strings der Zeichenfolge oder Teilzeichenfolge interpretiert. Das wäre nicht korrekt. Deshalb gilt die Regel: Wenn ich in ANSI SQL innerhalb eines Textes ein Hochkomma verwende, muss ich es doppelt eingeben. Das heißt, Sie sehen, jetzt habe ich hintereinander direkt zwei einfache Hochkommas eingegeben und das wird jetzt als eins interpretiert. Schauen wir uns das Ergebnis an, dann sehen wir, dass aus diesen zwei Eingegebenen eines übrig bleibt. Daraus ergibt sich, wenn wir jetzt ein Hochkomma ersetzen wollen, D.h. ein Hochkomma innerhalb eines Textes, dann müssen wir vier Stück eingeben. Warum ist das so? Betrachten wir einmal das Ergebnis, es kommt ein Hochkomma raus, die äußeren beiden sind unseren begrenzenden Hochkommas und die zwei in der Mitte werden zu dem einen, dass das Ergebnis dargestellt wird. Egal wie viele Hochkommas ich hintereinander verwenden möchte und eingeben möchte in SQL, ich muss für eines immer innerhalb des Strings "2" eingeben. Umgelegt auf unser Beispiel bedeutet das nun Folgendes: Ich ergänze hier noch ein "REPLACE" und tausche jetzt letztendlich noch was aus. Ein Hochkomma, D.h. ich muss vier eingeben, wie wir gerade gesehen haben und ersetze es durch einen Leer-String. In diesem Fall könnte ich natürlich auch einen Unterstrich verwenden, O_Bryan, je nachdem wie es Ihnen gefällt, das ist natürlich auch Geschmackssache. Ich ersetze hier einfach das Hochkomma ersatzlos durch nichts und nehme deshalb den Leer-String hier zur Hand. Und wenn ich nun diese Anwendung ausführe, dann haben wir nun ein Ergebnis, so wie wir es haben wollten, nämlich aus Mike O'Bryan, der bekommt als Aliasname "M.Obryan". Das Ganze soll natürlich noch ein Gesicht bekommen, ein sauberes, deshalb "AS email;" am Ende, damit auch ein schöner Spaltenname das Ergebnis abrundet. Dieses Beispiel soll Ihnen zeigen, wie man mit Zeichenfolgen umgehen kann, erhebt natürlich nicht den Anspruch auf Vollständigkeit. Es könnten ja noch andere Sonderzeichen vorkommen, es könnte gleiche Namen geben etc. Das wird hier natürlich nicht berücksichtigt. Was ändert sich jetzt hier, wenn wir dieses Beispiel nun auf Oracle bzw. MySQL wieder umlegen? Ich kopiere mir die letztgültige Variante und begebe mich damit einmal zum Editor für unsere Oracle-Anweisungen. Wie wir ja wissen, müssen wir bei Oracle das kaufmännische "&" jeweils durch eine doppelte Pipe ersetzen. Allerdings ist das nicht das Einzige. Wenn wir diese Anweisung nun ausführen, werden wir eine Fehlermeldung bekommen. "LEFT": invalid identifier. "LEFT" wird jetzt fälschlicherweise als Spaltenname interpretiert, da es die Funktion "LEFT" bei Oracle nicht gibt. Das macht einen sehr komischen Eindruck, allerdings worin liegt das begründet? Oracle hat im Vergleich zu anderen Datenbankmanagementsystemen relativ wenige Funktionen, das heißt nicht, dass der Funktionsumfang geringer ist, aber es hat weniger Funktionen. Das heißt, Oracle verzichtet auf alles, was man anders darstellen kann. Mit anderen Worten, Oracle ist der Meinung, man braucht nicht für eine Sache mehrere Lösungsmöglichkeiten. Deshalb gibt es die Funktion "LEFT" nicht. Die Funktion "RIGHT" gibt es sowohl, weil die kann man nicht substituieren mit was anderem, aber "LEFT" kann man substituieren, und zwar durch die Funktion "SUBSTR". "SUBSTR" liefert ja auch, von einer Startposition aus, eine gewisse Anzahl von Zeichen, und jetzt kann ich hier "SUBSTR" verwenden und die erste Position als Startposition eingeben. Damit habe hier dieselbe Funktionalität wie "LEFT" und damit begründet Oracle, dass es die "LEFT"-Funktion gar nicht gibt. Also musste ich auch das hier ersetzen. Ich werde hier nur noch ein wenig einrücken, um auf eine saubere Darstellungsweise zu kommen, ansonsten sollte alles analog funktionieren, d.h. auch die Logik mit den Hochkommas etc. ist gleich. Was ich an dieser Stelle noch erwähnen sollte - wir sehen, es funktioniert einmal, ist, dass Oracle hier sehr wohl beim Vergleich im Gegensatz zu anderen Systemen zwischen Groß- und Kleinbuchstaben unterscheidet, d.h. ein großes "ö" würde nicht ersetzt werden. Deshalb war es hier auch von Bedeutung, dass wir zuvor schon mit der "LOWER"-Funktion alles in Kleinbuchstaben umgewandelt haben. Dadurch ist diese Unterscheidung uns erspart geblieben. Und unter MySQL müssen wir natürlich berücksichtigen, dass wir nicht Texte mit Plus Zzusammenhängen, sondern über die Funktion "CONQUERED". D.h. ich verwende jetzt hier diese Funktion, um an dieser Stelle hier zu sagen "CONQUERED" und hänge mir einerseits den ersten Buchstaben von links (die Funktion "LEFT" gibt es hier ganz normal wieder), dann den Punkt und dann den Nachnamen und natürlich auch die Domäne. Die nehme ich hier noch mit dazu, obwohl ich sie eigentlich in der "LOWER"- Funktion nicht benötigen würde, aber hat den Vorteil, dass sich nun ein zweiteres "CONQUERED" mir erspare. Und wenn ich mich nicht verschaut habe, müsste jetzt hier noch eine schließende Klammer kommen. Ich werde das gleich ausführen, nachdem ich das hier vielleicht noch ein wenig einrücke. Dann werden wir gleich sehen, ob ich darin jetzt richtig gelegen bin, oder ob wir hier noch nachbessern müssen. Schaut gut aus. Betrachten wir noch das Ergebnis. Wir haben hier sauber die Emailadresse trotz Sonderzeichen. Entscheidend ist auch der Mike O'Bryan, auch den haben wir jetzt hier richtig angezeigt. Das heißt, wir haben jetzt wieder ein Beispiel gesehen, dass wir einerseits mit dem Microsoft SQL-Server, mit Oracle und mit MySQL gelöst haben. Kleine Unterschiede gibt es im Umgang mit Funktionen, ansonsten die Anweisung an sich, ist die ANSI SQL-Anweisung von der Syntax her gleich. Sie haben also in diesem Beispiel gesehen, wie Sie in SQL Teile aus einer Zeichenfolge herausschälen können oder auch ersetzen können und vor allem wichtiger Punkt aus meiner Sicht, wie Sie in ANSI SQL mit Hochkommas innerhalb einer Zeichenfolge umgehen, nämlich insofern, dass sie doppelt eingegeben werden müssen.

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!