Zurück zur Artikelliste Artikel
7 Leseminuten

Was bewirken die Operatoren LIKE und NOT LIKE?

Die SQL-Operatoren LIKE und NOT LIKE werden verwendet, um Übereinstimmungen zwischen einer Zeichenkette und einem bestimmten Muster zu finden. Sie sind Teil des Standard-SQL und funktionieren in allen Datenbanktypen, was sie zu einem unverzichtbaren Wissen für alle SQL-Benutzer macht. Wenn Sie diese Operatoren verstehen, können Sie bessere Abfragen schreiben und potenziellen Arbeitgebern zeigen, dass Sie über die erforderlichen Fähigkeiten verfügen, um umfangreiche Datensätze zu filtern.

Der SQL-Operator LIKE ist ein logischer Operator, der überprüft, ob eine Zeichenkette ein bestimmtes Muster enthält oder nicht. Ein einfaches Beispiel hierfür ist, wenn Sie versuchen, herauszufinden, ob eine Namensspalte einen Namen mit vier Buchstaben enthält, der mit J beginnt (z. B. "John"). Der LIKE-Operator wird häufig in der WHERE-Klausel der Anweisungen SELECT, DELETE und UPDATE verwendet, um Daten anhand von Mustern zu filtern. Wenn Sie den LIKE Operator beherrschen, können Sie große Datenbanken mühelos durchsuchen und genau die Daten abrufen, die Sie benötigen. Dieser Artikel vermittelt Ihnen eine solide Grundlage für die Verwendung des LIKE Operators. Wenn Sie Ihre Fähigkeiten in diesem Bereich weiter ausbauen möchten, sollten Sie sich für diesen umfassenden, vollständigen Lernkurs von LearnSQL.de anmelden , in dem Sie SQL JOINs, Aggregationen mit GROUP BY und weitere fortgeschrittene Themen üben werden.

Sehen wir uns an, wie wir den Operator LIKE verwenden können, um die zurückgegebenen Daten zu filtern und so nur die gewünschten Datensätze abzurufen. Hier ist die Syntax des LIKE Operators:

SELECT column_1, column_2, ... column_n
FROM table_name
WHERE column_1 LIKE pattern

Wenden wir diese Syntax nun auf ein praktisches Beispiel an. Stellen Sie sich vor, wir haben eine Tabelle namens person_info die Informationen über den Vornamen, den Nachnamen und das Alter der Personen enthält.

FirstNameLastNameAge
TimSamuels46
JohnPeterson23
TomWaters42
SarahHenderson48
PaulJohnson34
AndrewWade39
SarahSmith30
LynnPeterson27

Verwenden wir den Operator LIKE, um die Informationen für Personen mit dem Nachnamen "Peterson" zu extrahieren.

SELECT FirstName, LastName, Age
FROM person_info
WHERE LastName LIKE 'Peterson'

Die Ausführung dieser SQL-Abfrage würde die folgende Ergebnismenge ergeben:

FirstNameLastNameAge
JohnPeterson23
LynnPeterson27

Dies ist ein einfacher Anwendungsfall für den Operator LIKE. Für einfache Fälle wie diesen hätten wir auch schreiben können:

SELECT FirstName, LastName, Age
FROM person_info
WHERE LastName = 'Peterson'

Worin besteht also der Unterschied zwischen LIKE und Gleichheitszeichen? Equals (=) ist ein Vergleichsoperator, der mit Zahlen und Zeichenketten arbeitet. Beim Vergleich von Zeichenketten vergleicht der Gleichheitsoperator ganze Zeichenketten. Im Vergleich dazu vergleicht LIKE Zeichen für Zeichen durch die Verwendung von Wildcards, die in diesem Artikel ausführlich besprochen werden.

Das SQL LIKE und die Platzhalter

Zusätzlich zur Untersuchung der Verwendung von SQL LIKE und NOT LIKE werden wir uns zwei Platzhalterzeichen ansehen: Prozent (%) und Unterstrich (_). Platzhalterzeichen werden verwendet, um ein oder mehrere Zeichen in einer Musterzeichenfolge zu ersetzen:

  • Der Platzhalter in Prozent (%) ersetzt ein oder mehrere Zeichen in einer Zeichenfolge.
  • Der Platzhalter Unterstrich (_) ersetzt genau ein Zeichen in einer Zeichenfolge.

Der Unterstrich (_) Platzhalter

Schauen wir uns zunächst den Unterstrich (_) als Platzhalter an und wenden ihn auf unsere person_info Tabelle.

Stellen Sie sich vor, wir wollen aus der Tabelle person_infodie Vornamen der Personen mit den folgenden Bedingungen abrufen:

  • Der Platzhalter FirstName muss mit dem Buchstaben "T" beginnen,
  • Der dritte Buchstabe von FirstName muss "m" sein, und
  • Der zweite Buchstabe FirstName kann ein beliebiger Buchstabe sein.

Wir können die folgende Abfrage verwenden:

SELECT FirstName
FROM person_info
WHERE FirstName LIKE 'T_m'

Das Ergebnis dieser Abfrage ist:

SELECT FirstName
FROM person_info
WHERE FirstName LIKE 'T_m'

Das Ergebnis dieser Abfrage ist: Das Ergebnis dieser Abfrage ist:

FirstName
Tim
Tom

Beachten Sie, dass der zweite Buchstabe des Namens ein beliebiger Buchstabe sein kann. Unsere SQL-Abfrage ignoriert diesen Buchstaben und sucht nach dem Muster, das wir angegeben haben.

Schauen wir uns ein weiteres Beispiel an. Diesmal ersetzen wir zwei Zeichen durch zwei Unterstriche (_) als Platzhalter.

SELECT FirstName, LastName
FROM person_info
WHERE LastName LIKE 'Wa__'

Durch Ausführen dieser Abfrage wird ein einzelner Datensatz aus unserer Tabelle abgerufen.

FirstNameLastName
AndrewWade

Beachten Sie, dass Andrew Wade dem Muster entspricht, Tom Waters jedoch nicht. Indem wir zwei Unterstriche nach "Wa" setzen, geben wir ausdrücklich an, dass die gesuchte LastName 4 Zeichen lang ist.

Der Unterstrich kann an jeder beliebigen Stelle des gesuchten Musters stehen. "_om", "T_m" oder "To_" sind alles gültige Muster.

Der Platzhalter für Prozent (%)

Schauen wir uns nun den Prozentplatzhalter (%) im Detail an und wenden ihn auf unsere Tabelle person_info an.

Der Platzhalter in Prozent (%) wird verwendet, um mehrere Zeichen zu ersetzen. Nehmen wir an, wir wollen alle Personen finden, deren Nachname auf "son" endet. Um dies zu erreichen, können wir einfach die folgende Abfrage schreiben:

SELECT FirstName, LastName
FROM person_info
WHERE LastName LIKE '%son'

Das Ergebnis dieser Abfrage ist:

FirstNameLastName
JohnPeterson
SarahHenderson
PaulJohnson
LynnPeterson

Beachten Sie, dass die Anzahl der Zeichen vor "son" bei diesem Platzhalter keine Rolle spielt.

Wenn das gesuchte Muster in der Mitte einer anderen Zeichenfolge eingebettet ist, können Sie den Prozentplatzhalter am Anfang und am Ende des Musters verwenden. Um zum Beispiel alle Mitarbeiter zu finden, deren Nachnamen "er" enthalten, verwenden Sie die folgende Abfrage mit dem Muster '%er%'.

SELECT FirstName, LastName
FROM person_info
WHERE LastName LIKE '%er%'

Die Ausführung dieser Abfrage ergibt die folgende Ergebnismenge:

FirstNameLastName
JohnPeterson
TomWaters
SarahHenderson
LynnPeterson

Kombinieren wir die Verwendung von sowohl _ als auch %. Angenommen, wir wollen alle Vornamen finden, deren zweites Zeichen der Buchstabe "a" ist. Dies können wir mit der folgenden Abfrage erreichen:

SELECT FirstName, LastName
FROM person_info
WHERE FirstName LIKE '_a%'

Die Ausführung dieser Abfrage führt zu dieser Menge:

FirstNameLastName
SarahHenderson
PaulJohnson
PaulaSmith

Der Operator LIKE wird am häufigsten in Verbindung mit der Klausel WHERE verwendet. Er kann jedoch überall verwendet werden, wo Sie einen Ausdruck in SQL verwenden.

SQL NOT LIKE

SQL NOT LIKE verhält sich wie erwartet und gibt im Wesentlichen das Gegenteil von dem zurück, was der Operator LIKE tun würde. Ersetzen wir in einem unserer früheren Beispiele LIKE durch NOT LIKE und sehen wir uns die Auswirkungen an.

SELECT FirstName, LastName, Age
FROM person_info
WHERE LastName NOT LIKE 'Peterson'

Hier ist die Ergebnismenge:

FirstNameLastNameAge
TimSamuels46
TomWaters42
SarahHenderson48
PaulJohnson34
AndrewWade39
PaulaSmith30

Wie Sie sehen können, negiert NOT LIKE das von Ihnen angegebene Muster. Dies ist ähnlich wie bei anderen NOT-Operatoren, die Sie in SQL finden. In diesem Fall ruft der Operator NOT LIKE Daten für alle Personen ab, deren Nachname nicht Peterson ist.

SQL LIKE Groß-/Kleinschreibung

In den obigen Beispielen wurde der Name "Peterson" mit einem Großbuchstaben verwendet. Je nach SQL-Variante, die Sie verwenden, kann der Operator LIKE zwischen Groß- und Kleinschreibung unterscheiden. Bei MySQL, PostgreSQL und Oracle wird standardmäßig zwischen Groß- und Kleinschreibung unterschieden.

Bei SQL Server kann es etwas komplizierter werden. Standardmäßig wird bei SQL Server nicht zwischen Groß- und Kleinschreibung unterschieden. Es ist jedoch möglich, eine SQL Server-Datenbank unter Berücksichtigung der Groß- und Kleinschreibung zu erstellen und sogar bestimmte Tabellenspalten unter Berücksichtigung der Groß- und Kleinschreibung zu definieren.

LIKE und NOT LIKE anders als in einer WHERE-Klausel

Es ist üblich, LIKE und NOT LIKE in Kombination mit einer WHERE Klausel zu verwenden. Der Operator LIKE kann jedoch in jeder gültigen SQL-Anweisung verwendet werden, z. B. SELECT, INSERT INTO, UPDATE oder DELETE. Sehen wir uns das anhand eines Beispiels an, das mit unserer person_info Tabelle. Betrachten Sie die folgende SQL-Abfrage:

SELECT FirstName, FirstName LIKE 'T%' AS starts_with_t
FROM person_info;

Die Anweisung SELECT ruft hier nicht nur die Daten aus der Spalte FirstName ab. Gepaart mit LIKE gibt die zweite in dieser Abfrage ausgewählte Spalte für jeden Datensatz in der Tabelle einen booleschen Wert zurück, der auf FirstName basiert. Das von uns angegebene Muster ist eine beliebige Zeichenfolge, die mit dem Buchstaben "T" beginnt. Diese Abfrage prüft also jede FirstName, um zu sehen, ob sie mit dem Buchstaben "T" beginnt, und gibt true (1) zurück, wenn dies der Fall ist, ansonsten false (0).

Das Ausführen dieser Abfrage erzeugt die folgende Ergebnismenge:

FirstNamestarts_with_t
Tim1
John0
Tom1
Sarah0
Paul0
Andrew0
Paula0
Lynn0

SQL LIKE und NOT LIKE sind für das Filtern von Daten unerlässlich

Wir haben die meisten Situationen für die Verwendung des LIKE Operators behandelt. Das Verständnis des SQL-Operators LIKE ist unerlässlich, und wenn Sie sich für eine Stelle bewerben, bei der die Verwendung von SQL erforderlich ist, kann dies eine der Fragen sein, die in einem SQL-Interview gestellt werden. Die Beherrschung des Operators LIKE und dieser beiden Platzhalterzeichen erfordert Übung. Dieser interaktive SQL-Kurs von LearnSQL.de mit 88 verschiedenen Übungen ist eine hervorragende Ressource für alle, die ihre Kenntnisse in diesem Bereich verbessern möchten.