Zeichenfolgen analysieren und formatieren
SUBSTRING, Positionen, Aufteilen und Groß-/Kleinschreibung in verschiedenen SQL-Dialekten.
Zeichenfolgen analysieren und formatieren ist eine kostenlose Coding Interview Prep-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Coding Interview Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Coding Interview Prep-Kurs umfasst insgesamt 4 Lektionen.
Warum String-Funktionen abgefragt werden
Reale Daten sind oft unübersichtlich: Vollständige Namen müssen aufgeteilt, E-Mail-Domains extrahiert, Codes aus IDs herausgelöst und unterschiedliche Groß- und Kleinschreibung vereinheitlicht werden. Interviewer verwenden Zeichenkettenverarbeitung, um zu prüfen, ob Sie Text bereinigen und umformen können, ohne ihn in ein Skript zu exportieren.
Wie bei Datumsangaben sind die Funktionen nur grob standardisiert. Entscheidend ist daher, dass Sie das Konzept und die gängigen Varianten kennen.
- Teilzeichenketten extrahieren und Positionen ermitteln
- Zeichenketten verketten
- Zeichenketten aufteilen und ersetzen
- Groß- und Kleinschreibung umwandeln und Leerzeichen entfernen
SUBSTRING und Positionen
SUBSTRING(s FROM start FOR length) ist die SQL-Standardform. Die meisten Systeme akzeptieren außerdem SUBSTRING(s, start, length). Zeichenpositionen beginnen bei 1 – eine klassische Fehlerquelle für Programmierer, die an nullbasierte Sprachen gewöhnt sind.
POSITION(sub IN s) (oder STRPOS/CHARINDEX) ermittelt, wo eine Teilzeichenkette beginnt, und liefert 0 zurück, wenn sie nicht gefunden wird.
SELECT
SUBSTRING('INV-2024-042' FROM 5 FOR 4) AS year, -- '2024'
POSITION('-' IN 'INV-2024-042') AS first_dash; -- 4Eine E-Mail-Domain extrahieren
Ein typisches Praxisbeispiel. Ermitteln Sie die Position von @ und übernehmen Sie anschließend alles dahinter. Die Kombination aus POSITION und SUBSTRING ist der portable Ansatz.
In PostgreSQL können Sie auch SPLIT_PART(email, '@', 2) verwenden. Das ist übersichtlicher und die idiomatische Lösung, die Sie erwähnen sollten.
-- Portable
SELECT SUBSTRING(email FROM POSITION('@' IN email) + 1) AS domain
FROM users;
-- Postgres idiom
SELECT SPLIT_PART(email, '@', 2) AS domain FROM users;Verketten über verschiedene SQL-Dialekte hinweg
Das Zusammenfügen von Zeichenketten hängt vom SQL-Dialekt ab, und Interviewer erwarten, dass Sie die Varianten kennen.
- SQL-Standard / Postgres / Oracle: der Operator
||. - MySQL:
CONCAT(a, b, c)(der Operator||ist standardmäßig ein logisches ODER). - SQL Server:
+für Zeichenketten oderCONCAT().
CONCAT() behandelt NULL wie eine leere Zeichenkette, während || und + das gesamte Ergebnis normalerweise zu NULL machen, wenn einer der Operanden NULL ist. Das ist eine subtile Fehlerquelle.
-- Postgres
SELECT first_name || ' ' || last_name AS full_name FROM people;
-- MySQL / SQL Server
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM people;Die NULL-Falle beim Verketten
Anknüpfend an die vorherige Szene: Wenn last_name NULL ist, ergibt first_name || ' ' || last_name in Postgres NULL, wodurch der gesamte Name verloren geht.
Die defensive Lösung besteht darin, auf möglicherweise NULL enthaltene Bestandteile COALESCE anzuwenden oder CONCAT_WS (Verketten mit Trennzeichen) zu verwenden. Diese Funktion überspringt NULL-Werte und fügt das Trennzeichen nur zwischen vorhandenen Werten ein.
-- Safe in Postgres / MySQL
SELECT CONCAT_WS(' ', first_name, last_name) AS full_name FROM people;
-- Or guard each part
SELECT first_name || ' ' || COALESCE(last_name, '') FROM people;Zeichenketten aufteilen
„Das dritte Segment aus einem Code mit Bindestrichen extrahieren“ prüft, ob Sie Zeichenketten aufteilen können. PostgreSQLs SPLIT_PART(s, delim, n) liefert das n-te Teilstück direkt und ist dafür das übersichtlichste Werkzeug.
MySQL bietet keine direkte Split-Funktion. Das übliche Idiom besteht aus verschachteltem SUBSTRING_INDEX: Zuerst werden die ersten n Teile genommen, anschließend das letzte dieser Teile.
-- Postgres
SELECT SPLIT_PART('a-b-c-d', '-', 3); -- 'c'
-- MySQL: third part of a-b-c-d
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('a-b-c-d', '-', 3), '-', -1); -- 'c'Ersetzen, Entfernen und Auffüllen
Bereinigungsoperationen, die Interviewer auf Anhieb erwarten:
REPLACE(s, from, to)ersetzt alle Vorkommen.TRIM(s)entfernt führende und nachfolgende Leerzeichen;TRIM(BOTH 'x' FROM s)entfernt ein bestimmtes Zeichen.LPAD(s, len, ch)/RPADfüllen auf eine feste Breite auf – praktisch, um IDs mit Nullen aufzufüllen.
SELECT
REPLACE('555.123.4567', '.', '-') AS phone, -- 555-123-4567
TRIM(' hello ') AS clean, -- 'hello'
LPAD('42', 6, '0') AS padded; -- '000042'Groß- und Kleinschreibung sowie Länge
Eine einheitliche Groß- und Kleinschreibung ist wichtig, bevor Text verglichen oder gruppiert wird. UPPER und LOWER sind universell verfügbar; INITCAP (Postgres/Oracle) schreibt Wörter in Titelgroßschreibung.
LENGTH(s) liefert in den meisten Systemen die Anzahl der Zeichen. Beachten Sie jedoch: SQL Server verwendet LEN(), und in einigen Konfigurationen zählt LENGTH bei mehrbyteigem Text die Bytes. Erwähnen Sie diese Besonderheit bei Daten mit Nicht-ASCII-Zeichen.
SELECT
LOWER(email) AS email_norm,
INITCAP(city) AS city_pretty, -- Postgres
LENGTH(description) AS chars
FROM places;Musterabgleich über LIKE hinaus
Wenn LIKE nicht leistungsfähig genug ist, zeigen Sie mit Kenntnissen zu regulären Ausdrücken, dass Sie die entsprechenden Werkzeuge kennen. PostgreSQL bietet den Operator ~ sowie REGEXP_REPLACE / REGEXP_MATCHES; MySQL bietet REGEXP / REGEXP_SUBSTR.
Beispiel: Behalten Sie aus einer Telefonnummer nur die Ziffern. Mit einem regulären Ausdruck gelingt das als Einzeiler statt als Kette von REPLACE-Aufrufen.
-- Postgres: strip non-digits
SELECT REGEXP_REPLACE('(555) 123-4567', '[^0-9]', '', 'g')
AS digits; -- '5551234567'Ausführlicheres Beispiel: Namen normalisieren und deduplizieren
Eine kombinierte Bereinigungsaufgabe. Angenommen, Namen enthalten überflüssige Leerzeichen und eine uneinheitliche Groß- und Kleinschreibung, wodurch fälschlicherweise Duplikate entstehen. Normalisieren Sie die Namen zunächst und gruppieren Sie sie anschließend.
Entfernen Sie führende und nachfolgende Leerzeichen, reduzieren Sie mithilfe eines regulären Ausdrucks mehrere interne Leerzeichen auf eines und wandeln Sie die Namen vor dem Zählen eindeutiger Werte in Kleinschreibung um. Genau diese Art von mehrstufigem Denken wird von Interviewern honoriert.
SELECT
LOWER(REGEXP_REPLACE(TRIM(name), '\s+', ' ', 'g')) AS norm_name,
COUNT(*) AS occurrences
FROM contacts
GROUP BY 1
ORDER BY occurrences DESC;Zeichenketten in Zahlen und Datumsangaben umwandeln
Zeichenkettenspalten enthalten häufig Werte, die eigentlich Zahlen oder Datumsangaben sein sollten. CAST(s AS INTEGER) oder die Postgres-Kurzform s::int wandelt sie um, schlägt bei ungültigen Eingaben jedoch fehl.
Für Datumsangaben verarbeitet TO_DATE(s, 'YYYY-MM-DD') (Postgres/Oracle) die Zeichenkette mithilfe einer expliziten Formatmaske. Das ist der sicherste Ansatz, weil dadurch Unklarheiten bei der Reihenfolge von Tag und Monat vermieden werden.
SELECT
CAST(qty_text AS INTEGER) AS qty,
TO_DATE(order_str, 'DD/MM/YYYY') AS order_date
FROM staging;Kurze Überprüfung
Überlegen Sie, wie sich NULL beim Verketten von Zeichenketten verhält.
Zusammenfassung: Zeichenketten analysieren und formatieren
Diese Punkte sollten Sie im Interview beherrschen:
- Zeichenpositionen beginnen bei 1; mit
SUBSTRINGundPOSITIONextrahieren Sie Text anhand seiner Position. - Verketten Sie mit
||(Postgres),CONCAT(MySQL) oder+(SQL Server) und denken Sie an die Weitergabe von NULL; bevorzugen SieCONCAT_WS. - Teilen Sie Zeichenketten mit
SPLIT_PART(Postgres) oder verschachteltemSUBSTRING_INDEX(MySQL) auf. REPLACE,TRIM,LPAD,UPPER/LOWERbereinigen und normalisieren Text; reguläre Ausdrücke bewältigen die schwierigen Fälle.- Normalisieren Sie Groß- und Kleinschreibung sowie Leerzeichen vor dem Gruppieren, um falsche Duplikate zu vermeiden.
Häufig gestellte Fragen
Ist die Lektion „Zeichenfolgen analysieren und formatieren“ kostenlos?
Ja — der vollständige Text von „Zeichenfolgen analysieren und formatieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Coding Interview Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Coding Interview Prep-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Zeichenfolgen analysieren und formatieren“?
SUBSTRING, Positionen, Aufteilen und Groß-/Kleinschreibung in verschiedenen SQL-Dialekten. Du übst Coding Interview Prep mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Coding Interview Prep zu starten?
Keine Vorkenntnisse erforderlich. Coding Interview Prep auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Zeichenfolgen analysieren und formatieren“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Coding Interview Prep-Lektion Code schreiben und ausführen?
Ja. Jede Coding Interview Prep-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Datumsarithmetik und Intervalle
- Datumsangaben abschneiden und gruppieren
- Zeichenfolgen analysieren und formatieren
- Zeitzonen und Zeitstempel