Der Operator LIKE filtert Textspalten nach Mustern statt nach exakten Werten. Er gehört in die WHERE-Klausel und nutzt zwei Platzhalter: % für eine beliebige Zeichenfolge (auch eine leere) und _ für genau ein Zeichen.

Die Wildcards

SELECT * FROM kunden WHERE nachname LIKE 'M%';    -- beginnt mit M
SELECT * FROM kunden WHERE nachname LIKE '_üller'; -- genau 1 Zeichen + üller
SELECT * FROM kunden WHERE nachname NOT LIKE 'X%'; -- NICHT mit X beginnend

%M% findet den Buchstaben M irgendwo im Text, % allein passt auf jede Zeile mit mindestens einem Wert – nicht auf NULL. Für das Gegenteil steht NOT LIKE.

Groß- und Kleinschreibung

Ob LIKE case-sensitiv ist, hängt vom System ab: PostgreSQL unterscheidet standardmäßig Groß-/Kleinschreibung (dort hilft ILIKE für die ignorante Variante), MySQL und SQL Server folgen der Collation der Spalte – bei der üblichen utf8mb4_unicode_ci ist die Suche unabhängig von der Schreibweise.

Wildcards als Literale suchen

Enthält der gesuchte Text selbst ein % oder _, wird das Zeichen mit ESCAPE maskiert:

SELECT * FROM dateien WHERE name LIKE '100!%' ESCAPE '!';

Hier steht !% für ein echtes Prozentzeichen, nicht für eine Wildcard.

Index und Alternativen

Ein Muster mit festem Präfix wie 'M%' kann einen Index nutzen; '%M%' oder '%M' erzwingen dagegen meist einen vollständigen Scan, weil die Datenbank das Ende der Zeichenkette nicht kennt. Für komplexe Muster gibt es reguläre Ausdrücke, für Suche über ganze Dokumente die Volltextsuche.

Verwandte Grundlagen: SQL WHERE, SQL NULL, SQL ORDER BY, SQL DISTINCT, SQL UNION ALL.