Direkt zum Inhalt
HeimAnleitungenSQL

SQL LIKE Pattern Matching Tutorial

Verwende LIKE, um SQL-Datensätze nach bestimmten String-Übereinstimmungen zu filtern. In diesem Tutorial lernst du, wie du Wildcards, NOT, LOWER, UPPER und CASE WHEN mit LIKE verwendest.
Aktualisierte 11. Sept. 2024  · 8 Min. lesen

Der SQL LIKE Operator für Mustervergleiche

Ob du es magst oder nicht, der LIKE Operator ist in SQL unerlässlich. Sie gibt Datenpraktikern die Möglichkeit, Daten nach bestimmten String-Übereinstimmungen zu filtern. Dieser Artikel bietet eine kurze Einführung in LIKE für Anfänger und Fortgeschrittene.

Um den Beispielcode in diesem Lehrgang ganz einfach selbst auszuführen, kannst du kostenlos eine DataLab-Arbeitsmappe erstellen, in der SQL, die Datenbank und alle Code-Beispiele für dich vorinstalliert sind.

Werde SQL-zertifiziert

Beweise mit einer Zertifizierung, dass deine SQL-Kenntnisse für den Job geeignet sind.
Meine Karriere Ankurbeln

Mitarbeiter

emp_no

birth_date

first_name

last_name

Geschlecht

hire_date

10001

1953-09-02T00:00:00.000Z

Georgi

Facello

M

1986-06-26T00:00:00.000Z

10002

1964-06-02T00:00:00.000Z

Bezalel

Simmel

F

1985-11-21T00:00:00.000Z

10003

1959-12-03T00:00:00.000Z

Parto

Bamford

M

1986-08-28T00:00:00.000Z

Angenommen, du hast eine Tabelle employees und möchtest alle Namen finden, die mit ‘A’ beginnen. Du könntest Zeit damit verbringen, die Tabelle manuell durchzusehen. Aber warum solltest du das tun, wenn du den LIKE-Operator hast?

SELECT DISTINCT
	first_name
FROM employees
WHERE first_name LIKE 'A%'

Die Magie liegt hier in der Klausel `WHERE first_name LIKE ‘A%’`, die bedeutet: "Finde alle first_name, die mit A beginnen und mit einer beliebigen Anzahl von Zeichen enden." Die `A%` ist hier als Muster für den Abgleich bekannt. 

`%` ist nicht der einzige Platzhalter, den du in Verbindung mit dem LIKE Operator verwenden kannst. Du kannst auch das Unterstrichzeichen `_` verwenden. 

  • `%` passt auf eine beliebige Anzahl von Zeichen.
  • `_` passt auf jedes einzelne Zeichen.

Die Syntax ist leicht zu merken. Es ist einfach

column_name LIKE pattern

Du kannst LIKE verwenden, um eine Vielzahl von Mustern abzugleichen. Und so geht's.

SQL LIKE Beispiele für Anfänger

Nachfolgend findest du einige praktische Beispiele, wie du die Anweisung LIKE verwenden kannst, sowie die Ergebnisse aus unserem Beispieldatensatz. 

1. Verwende LIKE für exakte String-Übereinstimmung

Wenn du einen exakten String-Match durchführen möchtest, verwende LIKE ohne ‘%’ oder ‘_’

SELECT
    first_name, last_name
FROM employees
WHERE first_name LIKE 'Barry' -- the same as WHERE first_name = ‘Barry’

2. Verwende ‘%’ um eine beliebige Anzahl von Zeichen zu finden 

‘%’ kann verwendet werden, um eine beliebige (auch null) Anzahl von Zeichen zu finden - eine Zahl, ein Alphabet oder ein Symbol.

Angenommen, du willst alle Mitarbeiter finden, deren Name mit ‘Adam’ beginnt; du kannst das Muster ‘Adam%’

SELECT DISTINCT
    first_name
FROM employees
WHERE first_name LIKE 'Adam%'

Um Namen zu finden, die mit ’Z’ enden, probiere das Muster ‘%z’ aus. Du kannst auch mehrere ‘%’ in einem Muster verwenden. Wenn du zum Beispiel Namen finden willst, die z enthalten, benutze ‘%z%’.

3. Verwende ‘_’ um ein (und nur ein) Zeichen zu finden

Wie bei dem Spiel Hangman kann das Unterstrichzeichen _ nur ein Zeichen enthalten.

Wie viele Möglichkeiten gibt es, Le_n zu buchstabieren? Das Muster würde auf alles von ‘Lexn’, ‘LeAn’, Le3n’ oder ‘Le-n’ passen.

SELECT DISTINCT
    first_name
FROM employees
WHERE first_name LIKE 'Le_n'

Wie lauten die verschiedenen Namen mit nur drei Buchstaben? Wir können das herausfinden, indem wir drei aufeinanderfolgende Unterstriche ___ als Muster verwenden.

SELECT DISTINCT
    first_name
FROM employees
WHERE first_name LIKE '___'

4. Beides verwenden ‘%’ und ‘_’ um jedes Muster zu erfüllen

Natürlich kannst du sowohl ‘%’ als auch ‘_’ verwenden, um interessante Muster zu erstellen. 

SELECT DISTINCT
    first_name
FROM employees
WHERE first_name LIKE '%ann_'

Das Muster ‘%ann_’ passt auf eine Zeichenfolge, die mit einer beliebigen Anzahl von Zeichen beginnt und mit ‘ann’ und einem weiteren Zeichen endet.

5. Verwende NOT um Zeichenketten zu finden, die nicht mit einem Muster übereinstimmen

Was ist, wenn du alle Zeilen finden willst, die ein bestimmtes Kriterium nicht erfüllen? Du kannst den NOT LIKE Operator verwenden. Um zum Beispiel alle Titel außer Staff zu finden, können wir die folgende Syntax verwenden

`WHERE title NOT LIKE ‘Staff’`

Dies ist genau gleich wie die Syntax

`WHERE title != ‘Staff’`
SELECT DISTINCT
    title
FROM titles
WHERE title NOT LIKE 'Staff'

Natürlich kannst du `NOT LIKE` mit jedem der beschriebenen Muster verwenden.

SELECT DISTINCT
    title
FROM titles 
WHERE title NOT LIKE '%engineer'

6. Verwende LOWER (oder UPPER) mit LIKE für den Mustervergleich ohne Berücksichtigung der Groß- und Kleinschreibung

Wenn du einen Mustervergleich durchführen musst, aber nicht sicher bist, ob die Zeichenfolge in Klein-, Groß- oder gemischter Großschreibung gespeichert ist, kannst du die folgende Syntax verwenden.

`LOWER(column_name) LIKE pattern`

Die Funktion LOWER() gibt alle Zeichenketten in Kleinbuchstaben zurück, unabhängig davon, ob sie als Groß-, Klein- oder Mischbuchstaben gespeichert sind. 

Wenn du die Syntax verwendest, achte darauf, dass du das Muster in Kleinbuchstaben schreibst! Andernfalls bekommst du vielleicht keine Treffer.

Du könntest auch LOWER durch UPPER in der obigen Syntax ersetzen. Achte darauf, dass du das Muster in GROSSBUCHSTABEN schreibst.

`UPPER(column_name) LIKE PATTERN`

Um zum Beispiel herauszufinden, ob der Name eines Mitarbeiters Joanne, JoAnne, Joanna oder JoAnna ist, versuche eine der folgenden Möglichkeiten.

SELECT DISTINCT
    first_name
FROM employees
WHERE lower(first_name) LIKE 'joann_'
SELECT DISTINCT
    first_name
FROM employees
WHERE UPPER(first_name) LIKE 'JOANN_'

7. SQL LIKE mit mehreren Werten mit OR/AND

Du kannst auch mehrere Bedingungen mit der LIKE Syntax kombinieren. 

Verwende zum Beispiel die OR Bedingung, um Ergebnisse zu finden, die mindestens eines von mehreren LIKE Mustern erfüllen.

SELECT DISTINCT
    first_name
FROM employees
WHERE
first_name LIKE 'Ad_l' OR
first_name LIKE 'Ad_m'

Wenn du hingegen eine Zeichenfolge finden willst, die auf mehrere Bedingungen von LIKE passt, verwende das Schlüsselwort AND.

SELECT DISTINCT
    first_name
FROM employees
WHERE
first_name LIKE '%am%' AND
first_name LIKE '%me%'

Die LIKE Syntax kann auf mehrere Spalten angewendet werden, solange ihr Variablentyp ein Zeichen mit variabler Länge ist (varchar). Wenn wir wissen, dass wir die Namen der Mitarbeiter herausfinden können, deren Initialen ‘Z. Z.’

SELECT DISTINCT
    first_name, last_name
FROM employees
WHERE
first_name LIKE 'Z%' AND
last_name LIKE 'Z%'

8. Verwende LIKE in der SELECT CASE WHEN clause 

Bisher haben wir uns darauf konzentriert, LIKE als Bedingung für die Auswahl von Datensätzen in der WHERE Klausel zu verwenden. Wir verwenden LIKE auch in der SELECT Klausel. Können wir zum Beispiel herausfinden, wie viele Mitarbeiter mit dem Namen ‘Adam’ in unserer Datenbank sind?

SELECT
    COUNT(CASE WHEN first_name LIKE 'Adam' THEN 1 END) num_employees_adam
FROM employees

Andererseits, wie viele Mitarbeiter haben die Initialen ‘A.Z.’?

SELECT
    COUNT(CASE WHEN first_name LIKE 'A%' AND last_name LIKE 'Z%' THEN 1 END) num_employees
FROM employees

Beispiele für SQL LIKE für Fortgeschrittene

Die Funktion LIKE ist in den verschiedenen SQL-Varianten (z. B. PostgreSQL, MySQL, Redshift usw.) weitgehend ähnlich. Einige haben zusätzliche Varianten der Funktion LIKE, die erwähnenswert sind. 

1. Die ILIKE Betreiber

ILIKE ist in Redshift und PostgreSQL verfügbar und ist die Version von LIKE, die Groß- und Kleinschreibung nicht berücksichtigt. Somit sind alle folgenden Punkte gleichwertig.

SELECT
  datacamp ILIKE ‘datacamp’, -- returns TRUE
  DATACAMP ILIKE ‘datacamp’, -- returns TRUE
  Datacamp ILIKE ‘datacamp’, -- returns TRUE
  datacamp ILIKE ‘DataCamp’, -- returns TRUE

2. Eckige Klammern verwenden [] und [^] als Platzhalterzeichen

Benutzer von T-SQL oder SQL Server haben zusätzliche Platzhalterzeichen für komplexere Mustervergleiche.

Die Syntax der eckigen Klammern [] passt auf jedes einzelne Zeichen innerhalb des Bereichs oder der Menge. Die folgenden Beispiele geben zum Beispiel alle TRUE zurück.

SELECT
  ‘Carson’ LIKE ‘[C-K]arson’, -- returns TRUE because C is in the range C-K
  ‘Karson’ LIKE ‘[C-K]arson’, -- returns TRUE because K is in range
  ‘Larson’ LIKE ‘[CKL]arson’, -- returns TRUE because L is in the set [CKL]
  ‘Parson’ LIKE ‘[C-K]arson’ -- returns FALSE because P is out of range

Der Platzhalter "caret-in-square-bracket" [^] passt auf jedes einzelne Zeichen, das nicht in dem angegebenen Bereich oder Satz liegt. Kannst du sehen, warum die folgenden Ergebnisse so sind? 

SELECT
  ‘Carson’ LIKE ‘[^C-K]arson’ -- returns FALSE 
  ‘Parson’ LIKE ‘[^C-K]arson’ -- returns TRUE

Da C im Bereich von [C-K] liegt, passt das Muster ‘C’ nicht zu [^C-K]. Daher wird ‘Carson’ nicht mit ‘[^C-K]arson übereinstimmen.

3. Die RLIKE Betreiber

Der in MySQL verfügbare RLIKE Operator erkennt reguläre Ausdrücke (RegEx) im Muster. RegEx ist ein leistungsfähiges und vielseitiges Werkzeug für den erweiterten Mustervergleich. 

Es kann nicht schaden, ein Grundverständnis von RegEx zu haben, vor allem wenn deine SQL-Variante RLIKE unterstützt. Mehr über RegEx kannst du in unserem Kurs Reguläre Ausdrücke in Python lernen.

SELECT DISTINCT
    first_name
FROM employees
WHERE first_name RLIKE 'Susann[a-e]'

4. Die ‘~~’ Betreiber

In PostgreSQL ist ‘~~’ völlig gleichbedeutend mit LIKE. Es gibt auch Äquivalente von ILIKE, NOT LIKE und NOT ILIKE.

Betreiber

Äquivalent

~~

LIKE

~~*

ILIKE

!~~

NOT LIKE

!~~*

NOT ILIKE

Verwende SQL LIKE selbstbewusst

Die Beherrschung von SQL-Funktionen ist der Schlüssel zum Erfolg in der Datenwissenschaft, und der LIKE-Befehl von SQL ist keine Ausnahme. Eine gute Beherrschung von SQL wird deinen Fortschritt in der Analytik beschleunigen, also lerne es gut!

Wenn du mehr über SQL wissen willst, solltest du dir die folgenden Seiten ansehen:

Werde Dateningenieur

Werde ein Dateningenieur durch fortgeschrittenes Python-Lernen
Themen

Erfahre mehr über SQL

Zertifizierung verfügbar

Course

Einführung in SQL

2 hr
792.6K
Lerne in nur zwei Stunden, wie man relationale Datenbanken mit SQL erstellt und abfragt.
See DetailsRight Arrow
Start Course
Mehr anzeigenRight Arrow