0Pricing
Coding Interview Prep · Lektion

LIKE, Platzhalter und Escaping

Mustervergleich, Prozentzeichen und Unterstrich sowie das Escaping von Platzhalterzeichen

LIKE, Platzhalter und Escaping 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.

Mustervergleich im Vorstellungsgespräch

LIKE wirkt einfach, verbirgt aber drei klassische Stolperfallen im Vorstellungsgespräch: die Verwechslung von % und _, das Vergessen, dass ein wörtliches Prozent- oder Unterstrichzeichen in den Daten maskiert werden muss, und die je nach Datenbank unterschiedliche Überraschung bei der Groß- und Kleinschreibung.

In dieser Lektion üben Sie die beiden Platzhalter, die ESCAPE-Klausel und die datenbankübergreifenden Regeln, mit denen ein Interviewer Junioren von Personen unterscheidet, die bereits echte Suchfunktionen ausgeliefert haben.

Die beiden Platzhalter

LIKE kennt genau zwei Platzhalterzeichen:

  • % entspricht keinem oder mehreren Zeichen
  • _ entspricht genau einem Zeichen

'a%' entspricht also allem, was mit a beginnt, während 'a_' einer zweistelligen Zeichenkette entspricht, die mit a beginnt. Diese beiden Zeichen zu verwechseln, ist der häufigste LIKE-Fehler.

SELECT *
FROM customers
WHERE name LIKE 'A%';
-- every name beginning with A

Das Prozentzeichen an beliebiger Stelle

Setzen Sie das % an die passende Stelle, um festzulegen, wo der Treffer verankert wird:

  • '%son' endet auf son (Johnson, Mason)
  • '%mary%' enthält mary an beliebiger Stelle
  • 'J%n' beginnt mit J und endet mit n

Ein allein stehendes '%' findet jede Zeile, deren Wert nicht NULL ist. NULL-Werte stimmen niemals mit einem LIKE-Muster überein, auch nicht mit '%'.

SELECT *
FROM customers
WHERE email LIKE '%@gmail.com';

Unterstrich für feste Längen

_ entspricht einem einzelnen beliebigen Zeichen und ist daher für Codes mit fester Länge nützlich. 'A__' entspricht genau drei Zeichen, die mit A beginnen, nicht mehr und nicht weniger.

Interviewer prüfen dies gern anhand von Produkt- oder Ländercodes. Wer bei der Frage nach einem dreistelligen Code, der mit A beginnt, 'A%' schreibt, liegt knapp daneben, weil damit A gefolgt von beliebigen Zeichen zurückgegeben wird.

SELECT *
FROM products
WHERE sku LIKE 'A__';
-- A followed by exactly two more characters

Wenn % und _ in den Daten vorkommen

Was ist, wenn Sie Werte finden müssen, die buchstäblich ein Prozentzeichen enthalten, etwa ein Rabattlabel wie '50% Rabatt'? LIKE '%50%%' funktioniert nicht, weil das abschließende % als Platzhalter und nicht als wörtliches Zeichen behandelt wird.

Sie müssen SQL mitteilen, dass ein bestimmtes Zeichen wörtlich gemeint ist. Dafür gibt es die ESCAPE-Klausel.

Die ESCAPE-Klausel

Geben Sie mit ESCAPE ein Maskierungszeichen an und stellen Sie es jedem Platzhalter voran, der wörtlich behandelt werden soll. Hier ist ! das Maskierungszeichen, daher bedeutet !% ein wörtliches Prozentzeichen.

Damit finden Sie Werte, die an beliebiger Stelle den wörtlichen Text 50% enthalten. Das Maskierungszeichen ist frei wählbar; wählen Sie eines, das in Ihrem Suchtext nicht vorkommt.

SELECT *
FROM promos
WHERE label LIKE '%50!%%' ESCAPE '!';
-- matches a literal '50%' anywhere in label

Einen wörtlichen Unterstrich maskieren

Unterstriche verstecken sich häufig in Benutzernamen und Bezeichnern, und ein nicht maskiertes _ entspricht unbemerkt jedem beliebigen Zeichen. Um E-Mail-Adressen zu finden, die buchstäblich mit 'a_b' beginnen, müssen Sie den Unterstrich maskieren.

Ohne die Maskierung würde 'a_b%' auch 'axb', 'a9b' und ähnliche Werte finden. Dieser Fehler gelangt ständig in die Produktion, weil die nicht maskierte Abfrage weiterhin plausibel wirkende Zeilen zurückgibt.

SELECT *
FROM users
WHERE handle LIKE 'a!_b%' ESCAPE '!';
-- handle starting with the literal text a_b

Die Groß- und Kleinschreibung variiert je nach Datenbank

Ob LIKE zwischen Groß- und Kleinschreibung unterscheidet, hängt von der Engine und der Sortierung ab:

  • PostgreSQL: Bei LIKE wird zwischen Groß- und Kleinschreibung unterschieden; verwenden Sie für eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung ILIKE
  • MySQL: hängt von der Spaltensortierung ab und unterscheidet häufig standardmäßig nicht zwischen Groß- und Kleinschreibung
  • SQL Server: hängt von der Einstellung der Sortierung ab

Der portable, explizite Ansatz besteht darin, beide Seiten in Kleinbuchstaben umzuwandeln.

SELECT *
FROM customers
WHERE LOWER(name) LIKE 'a%';

Die versteckten Performance-Kosten

Ein führender Platzhalter wie '%son' kann keinen normalen B-Tree-Index verwenden, weil der Index nach Präfix geordnet ist und der Anfang nicht festgelegt wurde. Die Engine muss jede Zeile durchsuchen.

'son%' (ein Platzhalter am Ende bei verankertem Präfix) kann einen Index verwenden. Interviewer fragen gern, warum eine LIKE-Suche langsam ist; der führende Platzhalter % ist meist die Antwort.

-- index-friendly (anchored prefix):
WHERE name LIKE 'Smi%'
-- forces a scan (leading wildcard):
WHERE name LIKE '%mith'

Über LIKE hinaus

Wenn LIKE nicht ausreicht, nennen Sie die Alternativen, um Ihre Erfahrung zu zeigen:

  • SIMILAR TO und POSIX-Regex (~, ~*) in PostgreSQL für echte reguläre Ausdrücke
  • Volltextsuchindizes für große Freitextbestände
  • Trigramm-Indizes (pg_trgm), um Suchen mit führendem Platzhalter zu beschleunigen

Wer diese Begriffe nennt, zeigt, dass LIKE nur die Grundlage und nicht die Obergrenze der Textsuche ist.

LIKE-Muster sicher aus Benutzereingaben erstellen

Interviewer fragen häufig: Wie suchen Sie mit LIKE nach einem vom Benutzer eingegebenen Begriff, ohne dass etwas schiefgeht? Zwei Risiken sollten Sie nennen:

  • Injection – binden Sie den Wert als Parameter; hängen Sie niemals rohe Eingaben an die SQL-Zeichenfolge an.
  • Nicht maskierte Platzhalter – wenn die Eingabe selbst % oder _ enthält, maskieren Sie diese, damit sie wörtlich abgeglichen werden.

Binden Sie den Parameter und fügen Sie anschließend Ihre eigenen Platzhalter in der Abfrage hinzu.

-- $1 is bound as a parameter; wildcards are added in SQL
SELECT *
FROM products
WHERE name LIKE '%' || replace(replace($1, '_', '\_'), '%', '\%') || '%' ESCAPE '\';

Kurzer Check

Rufen Sie sich den Unterschied zwischen den beiden Platzhaltern ins Gedächtnis.

Zusammenfassung

Die wichtigsten Punkte:

  • % entspricht keinem oder mehreren Zeichen; _ entspricht genau einem
  • Um ein wörtliches % oder _ in den Daten zu finden, geben Sie ein ESCAPE-Zeichen an und stellen Sie es dem Platzhalter voran
  • Die Groß- und Kleinschreibung variiert je nach Engine; LOWER() auf beiden Seiten ist die portable Lösung (Postgres bietet ILIKE)
  • Ein führender Platzhalter erzwingt einen vollständigen Scan; ein verankertes Präfix kann einen Index verwenden

Ein nicht maskiertes _ ist ein unbemerkter Fehler: Es liefert weiterhin plausibel wirkende Zeilen zurück.

Häufig gestellte Fragen

Ist die Lektion „LIKE, Platzhalter und Escaping“ kostenlos?

Ja — der vollständige Text von „LIKE, Platzhalter und Escaping“ 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 „LIKE, Platzhalter und Escaping“?

Mustervergleich, Prozentzeichen und Unterstrich sowie das Escaping von Platzhalterzeichen 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 „LIKE, Platzhalter und Escaping“?

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

  1. AND/OR-Rangfolge und Klammerung
  2. BETWEEN, IN und inklusive Grenzen
  3. LIKE, Platzhalter und Escaping
  4. Nach berechneten Werten filtern
← Zurück zu Coding Interview Prep