Mit Textdaten zu arbeiten ist Alltag, wenn du mit Datenbanken zu tun hast. Stell dir vor, du bist Entwickler in einem Online-Shop und hast eine User-Datenbank. Du willst vollständige Namen der Nutzer für ein Willkommensbanner auf der Website anzeigen, zum Beispiel: "Willkommen, Otto Art!". Oder du willst alle E-Mail-Adressen standardisieren (z.B. alles in Kleinbuchstaben umwandeln). Ohne String-Operationen geht da gar nichts.
PostgreSQL gibt dir richtig starke Tools für Textbearbeitung. Heute schauen wir uns drei Hauptfunktionen an:
CONCAT()— Strings zusammenfügen.UPPER()— String in Großbuchstaben umwandeln.LOWER()— String in Kleinbuchstaben umwandeln.
Arbeiten mit der Funktion CONCAT()
Mit CONCAT() kannst du mehrere Strings zu einem zusammenfügen. Das ist super praktisch, wenn die Daten in verschiedenen Spalten liegen, du sie aber zusammen anzeigen willst.
Syntax
CONCAT(string1, string2, ..., stringN)
string1,string2,stringN— Strings oder Spalten, die du zusammenfügen willst.- Gibt einen String zurück, der aus allen Argumenten besteht.
Beispiel: Namen bearbeiten
Angenommen, wir haben eine Tabelle students:
| first_name | last_name |
|---|---|
| Otto | Art |
| Maria | Chi |
| Anna | Pal |
Unsere Aufgabe: Die vollständigen Namen der Studenten im Format "Vorname Nachname" anzeigen.
Query:
SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM students;
Ergebnis:
| full_name |
|---|
| Otto Art |
| Maria Chi |
| Anna Pal |
Achte auf das ' ' zwischen Vor- und Nachname. Das ist das Leerzeichen, das wir zum Trennen der Strings eingefügt haben.
Besonderheiten
CONCAT() ignoriert NULL. Wenn eins der Argumente NULL ist, wird es einfach übersprungen. Falls du noch nicht weißt, was NULL ist – keine Sorge, das kommt noch später dran.
Alternative zu CONCAT() ist der Operator ||, zum Beispiel:
SELECT first_name || ' ' || last_name AS full_name FROM students;
Groß-/Kleinschreibung ändern: UPPER() und LOWER()
Stell dir vor, du hast E-Mail-Adressen, die die User in allen möglichen Schreibweisen eingegeben haben: ivan@example.com, IVAN@EXAMPLE.COM. Um das zu standardisieren, macht man oft folgendes:
- Text vor dem Vergleich in eine einheitliche Form bringen (z.B.
lowercase). - Wichtige Wörter hervorheben (z.B.
UPPERCASEfür Überschriften).
UPPER(): Text in Großbuchstaben
Die Funktion UPPER() macht aus deinem Text alles Großbuchstaben.
Syntax:
UPPER(string)
string— ein String oder der Name einer Textspalte.
Beispiel:
In der Tabelle students gibt es jetzt eine Spalte email:
| first_name | last_name | |
|---|---|---|
| Otto | Art | otto@example.com |
| Maria | Chi | MARIA@EXAMPLE.com |
| Anna | Pal | anna.pal@mail.ru |
Wir wollen die E-Mail-Adressen in Großbuchstaben anzeigen:
SELECT email, UPPER(email) AS email_upper
FROM students;
Ergebnis:
| email_upper | |
|---|---|
| otto@example.com | OTTO@EXAMPLE.COM |
| MARIA@EXAMPLE.com | MARIA@EXAMPLE.COM |
| anna.pal@gmail.com | ANNA.PAL@GMAIL.COM |
LOWER(): Text in Kleinbuchstaben
Genauso macht LOWER() alles zu Kleinbuchstaben.
Syntax:
LOWER(string)
Beispiel:
Wir bringen die E-Mail-Adressen in Kleinbuchstaben:
SELECT email, LOWER(email) AS email_lower
FROM students;
Ergebnis:
| email_lower | |
|---|---|
| otto@example.com | otto@example.com |
| MARIA@EXAMPLE.com | maria@example.com |
| anna.pal@gmail.com | anna.pal@gmail.com |
Praktische Beispiele und Use Cases
Lass uns alles Gelernte kombinieren.
Vollständiger Name in Großbuchstaben
Query:
SELECT CONCAT(UPPER(first_name), ' ', UPPER(last_name)) AS full_name_upper
FROM students;
Ergebnis:
| full_name_upper |
|---|
| OTTO ART |
| MARIA CHI |
| ANNA PAL |
Hier haben wir CONCAT() benutzt, um Vor- und Nachname zusammenzufügen, und UPPER(), um alles in Großbuchstaben zu bringen.
Beispiel: E-Mail-Adressen standardisieren
Wir wollen alle E-Mail-Adressen in Kleinbuchstaben bringen:
UPDATE students
SET email = LOWER(email);
Jetzt sehen alle E-Mail-Adressen in der Tabelle gleich aus, egal wie sie ursprünglich geschrieben wurden.
Wie der UPDATE-Operator funktioniert, lernst du in den nächsten Vorlesungen.
Willkommensgruß für Nutzer vorbereiten
Wir fügen zu den vollständigen Namen ein "Willkommen" hinzu:
SELECT CONCAT('Willkommen, ', first_name, ' ', last_name, '!') AS greeting
FROM students;
Ergebnis:
| greeting |
|---|
| Willkommen, Otto Art! |
| Willkommen, Maria Chi! |
| Willkommen, Anna Pal! |
Typische Fehler bei Textfunktionen
Wenn du das Leerzeichen in CONCAT() vergisst, sieht das Ergebnis komisch aus. Zum Beispiel:
SELECT CONCAT(first_name, last_name) AS full_name
FROM students;
Das Ergebnis wäre: "OttoArt", "MariaChi". Also immer das Leerzeichen an die richtige Stelle setzen.
Verwendung von NULL. Wenn eins der Argumente von CONCAT() NULL ist, kann der String unvollständig sein. Zum Beispiel:
SELECT CONCAT(first_name, ' ', middle_name, ' ', last_name) AS full_name
FROM students;
Wenn middle_name = NULL ist, bekommst du "Otto NULL Art" als Ergebnis. Um das zu vermeiden, kannst du die Funktion COALESCE() nutzen:
SELECT CONCAT(first_name, ' ', COALESCE(middle_name, ''), ' ', last_name) AS full_name
FROM students;
Mehr zu NULL und COALESCE() gibt's in den nächsten Vorlesungen :P
GO TO FULL VERSION