Zurück zur Artikelliste Artikel
9 Leseminuten

Wie man LIKE in SQL verwendet: SQL-Musterabgleich

Der SQL-Musterabgleich ist eine sehr wichtige und nützliche Fähigkeit. In diesem Artikel sehen wir uns an, wie Sie ihn mit LIKE in SQL durchführen können.

DerSQL-Musterabgleich ist ein sehr einfaches Konzept. Es ermöglicht Ihnen, Zeichenketten und Teilzeichenketten zu durchsuchen und bestimmte Zeichen oder Gruppen von Zeichen zu finden. Abgesehen von SQL kann diese Operation auch in vielen anderen Programmiersprachen durchgeführt werden.

In diesem Artikel wird untersucht , wie Sie LIKE in SQL verwenden können, um Teilzeichenfolgen zu suchen. Außerdem wird der Unterschied zwischen exakter und teilweiser Übereinstimmung in SQL erläutert, indem erklärt wird , wie Sie Ihre Suche durch die Verwendung von Wildcards erweitern können. Schließlich wird geklärt, wann Sie etwas anderes als LIKE verwenden sollten, um eine Übereinstimmung zu finden.

Wenn Sie LIKE und andere SQL-Funktionen üben möchten, schauen Sie sich unseren SQL-Praxis Kurs. Er bietet über 600 interaktive SQL-Übungen, die Ihnen helfen, Ihr SQL-Wissen zu überprüfen und Vertrauen in Ihre SQL-Kenntnisse zu gewinnen.

Wie verwendet man LIKE in SQL?

Angenommen, Sie müssen einige Datensätze abrufen, die darauf basieren, ob eine Spalte eine bestimmte Gruppe von Zeichen enthält. Wie Sie wissen, filtert die Klausel WHERE in SQL die Ergebnisse von SELECT. An sich findet WHERE exakte Übereinstimmungen. Was aber, wenn Sie etwas mit einer teilweisen Übereinstimmung finden müssen?

In diesem Fall können Sie LIKE in SQL verwenden. Dieser Operator durchsucht Zeichenketten oder Teilzeichenketten nach bestimmten Zeichen und gibt alle Datensätze zurück, die diesem Muster entsprechen. (Daher der SQL-Mustervergleich.) Nachfolgend sehen Sie die Syntax des LIKE-Operators in einer SELECT -Anweisung:

SELECT   [ column_list |  *  ]   
FROM  table_name
WHERE  column or expression  LIKE  pattern;

Beachten Sie, dass der Spaltenname oder der zu durchsuchende Ausdruck vor LIKE in SQL steht. Nach dem Operator steht das Muster, das abgeglichen werden soll. Dieses Muster kann reiner Text oder Text in Kombination mit einem oder mehreren Platzhaltern sein. Die Verwendung von Platzhaltern wird im Folgenden erläutert.

SQL Teilweise Übereinstimmung: Verwendung von LIKE mit Platzhaltern

Wenn Sie das genaue Muster, nach dem Sie suchen, nicht kennen, können Sie Wildcards verwenden, um es zu finden. Platzhalter sind Textsymbole, die angeben, wie viele Zeichen an einer bestimmten Stelle in der Zeichenkette vorkommen sollen. Der SQL-ANSI-Standard verwendet zwei Platzhalter, Prozent (%) und Unterstrich (_), die auf unterschiedliche Weise verwendet werden. Bei der Verwendung von Platzhaltern führen Sie eine partielle statt einer exakten SQL-Übereinstimmung durch, da Sie keine exakte Zeichenfolge in Ihre Abfrage aufnehmen.

wildcard description
% zero, one, or many characters, including spaces
_ a single character

Sehen Sie sich die vollständige animal Tabelle an, die wir in unseren SQL-Abfragen verwenden werden:

id name
1 frog
2 dog
3 bear
4 fox
5 jaguar
6 puma
7 panda
8 lion
9 leopard
10 sheep
11 camel
12 monkey
13 lemur
14 rabbit
15 hedgehog
16 elephant
17 elephant.. .
18 langur
19 hog
20 gerenuk
21
22 null

Hinweis: ... steht für zwei Leerzeichen.

SQL-Teilübereinstimmung: der prozentuale Platzhalter

Wie Sie in der obigen Tabelle sehen können, kann der prozentuale Platzhalter verwendet werden, wenn Sie nicht sicher sind, wie viele Zeichen Teil Ihrer Übereinstimmung sein werden. Im folgenden Beispiel sehen Sie, was passiert, wenn Sie nur diesen Platzhalter mit LIKE in SQL verwenden:

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE '%' ;

Ergebnis:

id name
1 frog
2 dog
3 bear
4 fox
5 jaguar
6 puma
7 panda
8 lion
9 leopard
10 sheep
11 camel
12 monkey
13 lemur
14 rabbit
15 hedgehog
16 elephant
17 elephant.. .
18 langur
19 hog
20 gerenuk
21

Hinweis: .. . steht für zwei Leerzeichen.

Diese Verwendung der SQL-Teilübereinstimmung gibt alle Namen aus der Tabelle animal Tabelle zurück, auch diejenigen, die überhaupt keine Zeichen in der Namensspalte enthalten. Das liegt daran, dass der prozentuale Platzhalter jedes beliebige Zeichen oder kein Zeichen bezeichnet. Selbst wenn in der Namensspalte ein Nullwert steht, wird eine leere Zeichenfolge zurückgegeben.

Wenn Sie jedoch nur die Tiernamen zurückgeben möchten, die mit einem "g" beginnen, sollten Sie die Abfrage mit einem "g" vor dem prozentualen Platzhalter schreiben:

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE 'g%' ;

Das Ergebnis dieser SQL-Teilabgleichsoperation ist das folgende:

id name
20 gerenuk

Wenn Sie die Tiernamen auswählen möchten, die mit einem "g"enden, setzen Sie den prozentualen Platzhalter an die erste Stelle, wie in dieser SQL-Teilabfrage gezeigt:

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE '%g';

Ergebnis:

id name
1 frog
2 dog
15 hedgehog
19 hog

Die folgende Abfrage gibt alle Tiere zurück, deren Name ein "g". Verwenden Sie dazu zwei prozentuale Platzhalter und ein "g" Zeichen, wie unten gezeigt.

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE '%g%';

Ergebnis:

id name
1 frog
2 dog
5 jaguar
15 hedgehog
18 langur
19 hog
20 gerenuk

Alle diese Tiere haben einen Namen, der irgendwo ein "g" enthält - am Anfang, in der Mitte oder am Ende.

Kommen wir nun zum Unterstrich-Wildcard.

SQL-Teilübereinstimmung: der Unterstrich-Platzhalter (Underscore Wildcard)

Der Unterstrich-Platzhalter steht für ein einzelnes Zeichen für jeden Unterstrich. Bei dieser SQL-Teilübereinstimmung kann er jedes beliebige Zeichen ersetzen, aber jeder Unterstrich ist auf ein Zeichen beschränkt. Sehen Sie sich das folgende Beispiel an:

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE '_';

Ergebnis:

id name

0 Zeilen

Diese Abfrage gibt keine Datensätze zurück, da es in der Tabelle keine einstelligen Tiernamen gibt.

Im nächsten Beispiel werden alle Namen angezeigt, die genau fünf Zeichen enthalten. Um dies darzustellen, müssen wir fünf Unterstriche verwenden:

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE '_____';

Ergebnis:

id name
7 panda
10 sheep
11 camel
13 lemur

Wenn Sie den Unterstrich als Platzhalter am Ende Ihrer SQL-Teilübereinstimmungszeichenfolge verwenden, gibt die Abfrage jeden Datensatz zurück, der mit dem angegebenen Text plus einem weiteren Zeichen übereinstimmt. Unten sehen Sie ein Beispiel:

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE 'lio_';

Ergebnis:

id name
8 lion

Was wird zurückgegeben, wenn die Abfrage einen Unterstrich als Platzhalter in der Mitte der Zeichenfolge enthält?

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE 'p_ma';

Ergebnis:

id name
6 puma

Es sind alle Tiere, deren Namen mit "p" beginnen und mit "ma" enden, mit nur einem Zeichen dazwischen.

SQL Teilweise Übereinstimmung: Kombination von Platzhaltern

Sie können auch eine Kombination aus Unterstrichen und Prozentzeichen für Ihren SQL-Mustervergleich verwenden. Sehen Sie sich das folgende Beispiel an:

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE '%ho_';

Ergebnis:

id name
15 hedgehog
19 hog

Wie Sie sehen können, gibt diese Abfrage Namen zurück, die "ho" mit einer beliebigen Anzahl von Zeichen davor und nur einem Zeichen danach kombinieren.

Verwendung von LIKE in SQL mit Text

Im Folgenden wird erläutert, wie Sie LIKE in SQL mit reinen Textzeichenfolgen und ohne Platzhalter verwenden können. Unter Umständen gibt es bessere Möglichkeiten als die Verwendung von LIKE beim SQL-Musterabgleich. Aber jetzt wollen wir erst einmal sehen, wie das funktioniert. Zunächst sehen wir uns die vollständige Tabelle der Tiernamen und ID-Nummern an, wie unten gezeigt:

id name
1 frog
2 dog
3 bear
4 fox
5 jaguar
6 puma
7 panda
8 lion
9 leopard
10 sheep
11 camel
12 monkey
13 lemur
14 rabbit
15 hedgehog
16 elephant
17 elephant. ..
18 langur
19 hog
20 gerenuk
21
22 null

Hinweis: . .. bezeichnet zwei Leerzeichen.

Beachten Sie, dass der Datensatz mit id=21 eine leere Zeichenkette (ohne jegliche Zeichen) enthält. Der letzte Datensatz hat einen NULL-Wert in der Spalte name.

Nehmen wir nun an, wir wollen die Datensätze abrufen, in denen der Name des Tieres "Elefant" ist . Das ist ziemlich einfach, wie das folgende Beispiel zeigt:

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE 'elephant';

Ergebnis:

id name
16 elephant

In der Tabelle gibt es tatsächlich zwei Datensätze, die "Elefant" enthalten. Der zweite Datensatz enthält jedoch zwei zusätzliche Leerzeichen am Ende des Wortes und wird daher nicht zurückgegeben.

Versuchen wir es mit einem anderen Textmuster, das diese beiden Leerzeichen enthält.

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE 'elephant  ';

Ergebnis:

id name
17 elephant. ..

Hinweis: . .. bedeutet zwei Leerzeichen.

Auch hier gibt es nur einen Datensatz: "elephant" mit zwei Leerzeichen.

Als Nächstes nehmen wir an, dass wir eine konkrete Zeichenkette und einen Gleichheitsoperator (=) verwenden, etwa so:

SELECT 
  id, 
  name 
FROM animal
WHERE name = 'elephant '  ;

Ergebnis:

id name
16 elephant

Wenn Sie prüfen wollen, ob eine Textzeichenfolge mit dem Wert einer Spalte übereinstimmt, suchen Sie nach einer exakten SQL-Übereinstimmung und nicht nach einer teilweisen SQL-Übereinstimmung. In diesem Fall verwenden Sie einen Gleichheitsoperator und nicht LIKE.

Kombination von NOT- und LIKE-Operatoren

Sie können auch nach Zeichenfolgen suchen, die nicht mit einem Muster übereinstimmen. Dazu kombinieren wir die Operatoren LIKE und NOT. Dies ist eine weitere Möglichkeit, den SQL-Mustervergleich durchzuführen.

Im folgenden Beispiel wollen wir alle Tiernamen finden, die kein "a" enthalten:

SELECT 
  id, 
  name 
FROM animal
WHERE name NOT LIKE '%a%';

Ergebnis:

id name
1 frog
2 dog
4 fox
8 lion
10 sheep
12 monkey
13 lemur
15 hedgehog
19 hog
20 gerenuk
21 camel

Verwendung von LIKE in SQL mit anderen Operatoren

Die Klausel WHERE kann mehr als eine Bedingung enthalten. Daher können LIKE und NOT LIKE auch mit anderen Operatoren verwendet werden. Schauen wir uns ein weiteres Beispiel an:

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE '%g'  OR name LIKE 's%'  ;

Ergebnis:

id name
1 frog
2 dog
10 sheep
15 hedgehog
19 hog

Er gibt alle Tiernamen zurück, die mit einem "s" Zeichen beginnen oder mit einem "g"Zeichen enden.

Verwendung von LIKE in SQL in anderen Anweisungen

Bis jetzt haben wir die Verwendung von LIKE in SQL nur in SELECT Anweisungen besprochen. Dieser Operator kann jedoch auch in anderen Anweisungen verwendet werden, z. B. in UPDATE oder DELETE. Wie Sie sehen, ist die Syntax recht ähnlich:

UPDATE table 
SET column1 = newValue
WHERE  column2  LIKE  pattern ;
DELETE  FROM  table
WHERE  column  LIKE  pattern ;

Schauen wir uns an, wie wir LIKE verwenden können, um einige Tiernamen zu ändern. Sind Sie bereit?

UPDATE  animal 
SET name='tiger'
WHERE name LIKE '%key%' ;

Es gibt nur einen Datensatz, der die Bedingung LIKE %key% erfüllt: Affe. Nach dieser Aktualisierung wird "tiger" alle Instanzen von "monkey" ersetzen.

Hier ist das Ergebnis nach der Aktualisierung und der anschließenden Auswahl aller Datensätze in der animal Tabelle.

SELECT * 
FROM  animal ;
id name
1 frog
2 dog
3 bear
4 fox
5 jaguar
6 puma
7 panda
8 lion
9 leopard
10 sheep
11 camel
12 tiger
13 lemur
14 rabbit
15 hedgehog
16 elephant
17 elephant.. .
18 langur
19 hog
20 gerenuk
21
22 null

Hinweis: . .. steht für zwei Leerzeichen.

Als nächstes löschen wir alle Datensätze, bei denen der Tiername mit einem "t":

DELETE FROM animal
WHERE name LIKE 't%'  ;

Mehr über SQL-Mustervergleiche erfahren

SQL-Mustervergleiche sind sehr nützlich für die Suche nach Textteilstrings. LIKE und sein enger Verwandter NOT LIKE machen dies recht einfach. Wenn Sie mehr über den Musterabgleich und den Operator LIKE erfahren möchten, besuchen Sie den KursSQL für Anfänger . Er zeigt Ihnen, wie Sie Abfragen von Grund auf neu erstellen können, führt Sie aber auch in praktische Fertigkeiten wie den Musterabgleich ein.

Wenn Sie über Grundkenntnisse in SQL verfügen, können Sie diese mit den SQL-Übungssatz von 88 Übungen auffrischen, die von einfachen Aufgaben mit SELECT FROM Anweisungen bis zu fortgeschrittenen Problemen mit mehreren Unterabfragen reichen. Oder probieren Sie unseren SQL-Praxis Track mit 5 SQL-Übungskursen und über 600 Übungen. Melden Sie sich jetzt kostenlos an!