SQL Server Essentials: Verwendung des SQL LIKE Operators

Der T-SQL LIKE Operator ist eine der nützlichsten Ergänzungen zur SQL SELECT-Anweisung. Letztere ruft ein Ergebnis-Set ab, und Sie können die Ergebnisse einfach mithilfe von Gleichheitsoperatoren und der WHERE-Klausel filtern, um bestimmte spezifische Bedingungen auszuwählen. Aber was ist mit den Zeiten, in denen Sie Zeilen auswählen möchten, die auf Teilwerten basieren? Hier kommt die SQL LIKE-Anweisung ins Spiel, und ich zeige Ihnen, wie Sie sie in diesem Tutorial verwenden können.

SQL LIKE Syntax

Die grundlegende Syntax des LIKE-Operators finden Sie in der folgenden Auflistung:

Werbeanzeige

  • Zuerst geben Sie den Ausdruck an, den Sie finden möchten. Dies ist typischerweise ein Spaltenname.
  • Dann können Sie optional NOT angeben, um diesen Ausdruck für alle Bedingungen zu verwenden, die nicht übereinstimmen. Die Verwendung der NOT LIKE-Bedingung ist nicht der häufigste Weg, um den LIKE-Operator zu verwenden.
  • Sie müssen dann das zu suchende Muster angeben. Dies kann eine Literalzeichenfolge sein oder es können Platzhalterzeichen enthalten sein, die den Abgleichprozess viel flexibler machen.
  • Dies kann optional gefolgt sein von einem Escape-Zeichen, das verwendet werden kann, um nach Platzhalterzeichen zu suchen.
  • Wenn einer der Argumente kein Zeichendaten-Typ ist, wird er von SQL Server in einen Zeichendaten-Typ umgewandelt.
match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]

SQL LIKE und Platzhalterzeichen

Bevor wir näher einsteigen, sollten Sie wissen, dass SQL LIKE-Mustererkennung sowohl reguläre Zeichen als auch Platzhalterzeichen enthalten kann. Platzhalterzeichen ermöglichen es Ihnen, eine bestimmte Zeichenfolge zu selektieren, die mit dem Platzhaltermuster übereinstimmt.

Bei Mustererkennung müssen reguläre Zeichen mit den in der Zeichenfolge angegebenen Zeichen übereinstimmen. Platzhalterzeichen können jedoch mit beliebigen Fragmenten der Zeichenfolge übereinstimmen. Die Verwendung von Platzhalterzeichen macht den LIKE-Operator flexibler als die regulären Gleichheitsoperatoren ( = und != ) für Zeichenfolgenvergleiche.

Der LIKE-Operator akzeptiert vier verschiedene Arten von Platzhalterzeichen. Jedes Platzhalterzeichen führt eine andere Vergleichsfunktion aus, und mehr dazu finden Sie in der folgenden Tabelle.

Wildcard character Description
% (percent sign) Any string of zero or more characters.
_ (underscore) Any single character.
[ ] Any single character within the specified range [a-f] or set [abcdef].
[^] Any single character not within the specified range [^a-f] or set [^abcdef].
The four different types of wildcard characters to use with the LIKE operator.

Der LIKE-Operator gibt TRUE zurück, wenn das match_expression das angegebene Muster übereinstimmt. Lassen Sie uns einige Beispiele zeigen, um Ihnen zu zeigen, wie Sie den SQL LIKE-Operator mit der AdventureWorksLT2019-Beispieldatenbank verwenden.

Werbung

Matching mehrere Platzhalterzeichen

Das %-Platzhalterzeichen steht für null oder mehr Zeichen. Die folgende Abfrage ruft alle Zeilen aus der Tabelle „Person.Person“ ab, in denen „LastName“ mit dem Buchstaben „A“ beginnt.

USE AdventureWorksLT2019;

SELECT FirstName, LastName FROM SalesLT.Customer

WHERE LastName LIKE 'A%';
Matching multiple wildcard characters (Image credit: Petri/Michael Otey)

Einzelzeichen-Platzhalterübereinstimmung

Das _-Platzhalterzeichen steht für ein einzelnes Zeichen. Die folgende Beispielabfrage ruft alle Zeilen aus der Tabelle „SalesLT.Product“ ab, in denen „Name“ genau vier Zeichen beliebiger Art enthält, gefolgt von einem Bindestrich.

USE AdventureWorksLT2019;

SELECT ProductID, Name FROM SalesLT.Product

WHERE Name LIKE '____-%';
Single character wildcard matching (Image credit: Petri/Michael Otey)

Platzhalterübereinstimmung für eine Gruppe von Zeichen

Das Platzhalterzeichen [] Wildcard repräsentiert ein beliebiges einzelnes Zeichen innerhalb des angegebenen Bereichs oder Sets. Die folgende SQL-Anweisung ruft alle Zeilen aus der Tabelle „SalesLT.Product“ ab, in denen der „Name“ mit „B“, „C“ oder „D“ beginnt.

USE AdventureWorksLT2019;

SELECT Name FROM SalesLT.Product

WHERE Name LIKE '[BCD]%';
Wildcard matching for a set of characters (Image credit: Petri/Michael Otey)

Platzhalterzeichen für einen Bereich von Zeichen

Sie können auch die LIKE-Klausel verwenden, um Bereichssuchen zu unterstützen. Diese Abfrage ruft die Nachnamen ab, die mit „ee“ enden und mit einem einzelnen Zeichen zwischen den Buchstaben „C“ und „L“ beginnen.

Werbung

USE AdventureworksLT2019;

SELECT LastName, FirstName FROM SalesLT.Customer

WHERE LastName LIKE '[C-L]ee'
Wildcard matching for a range of characters (Image credit: Petri/Michael Otey)

Ausschließen von Zeichen, die nicht Teil des angegebenen Sets sind

Das Platzhalterzeichen [^] Wildcard repräsentiert ein beliebiges einzelnes Zeichen, das nicht innerhalb des angegebenen Bereichs oder Sets liegt. Die folgende Abfrage ruft alle Zeilen aus der Tabelle „SalesLT.Product“ ab, in denen der „Name“ nicht mit „A“, „B“ oder „C“ beginnt.

USE AdventureworksLT2019;

SELECT Name FROM SalesLT.Product

WHERE Name LIKE '[^ABC]%';
Excluding characters that are not part of the specified set (Image credit: Petri/Michael Otey)

Verwendung mehrerer Platzhalterbedingungen

Die LIKE-Klausel kann auch in einer einzigen Abfrage mit mehreren Platzhaltern kombiniert werden. Die folgende Abfrage verwendet mehrere SQL-Platzhalter, um alle Zeilen aus der Tabelle „Person.Person“ abzurufen, in denen der „Vorname“ den Buchstaben „a“ enthält und der „Nachname“ ein beliebiges Zeichen gefolgt von „l“ enthält.

USE AdventureworksLT2019;

SELECT FirstName, LastName FROM SalesLT.Customer

WHERE FirstName LIKE '%a%' AND LastName LIKE '_l%';
Using multiple wildcard matching conditions (Image credit: Petri/Michael Otey)

Suche nach Platzhalterzeichen

Die Verwendung von Platzhaltern verleiht dem LIKE-Operator eine hohe Leistung und Flexibilität. Sie könnten sich jedoch fragen, wie Sie mithilfe von LIKE eines dieser Platzhalterzeichen selbst abgleichen können.

Dazu können Sie das Platzhalterzeichen in Klammern setzen, was es Ihnen ermöglicht, ein Platzhalterzeichen als Literalzeichen zu verwenden. Sie können einige Beispiele in der folgenden Tabelle sehen.

Pattern Search value
LIKE ‘%2[%]%’ 2%
LIKE ‘%[_]m%’ _m
LIKE ‘%[ [ ]%’ [
Searching for wildcard characters
  • Das erste Beispiel gleicht der Zahl 2, gefolgt vom Prozentplatzhalterzeichen.
  • Das zweite Beispiel gleicht dem Unterstrichzeichen, gefolgt vom Buchstaben m.
  • Das dritte Beispiel dient zum Abgleichen von eckigen Klammerzeichen.
(Image credit: Petri/Michael Otey)

Die SQL LIKE-Anweisung erweitert die SQL SELECT-Anweisung

Sie sollten jetzt besser verstehen, wie Sie den SQL LIKE-Operator nutzen können, um die Leistung und Flexibilität des SQL SELECT-Statements zu verbessern. Hier habe ich Ihnen auch gezeigt, wie Sie die LIKE-Klausel mit verschiedenen Platzhalterzeichen verwenden können. Zwischen dem Abgleich mehrerer Platzhalterzeichen, der Durchführung von Einzelzeichenabgleichen, dem Abgleich einer Zeichenmenge oder dem Ausschließen von Zeichen aus den Ergebnissen haben Sie wirklich viele Möglichkeiten zur Hand.

Source:
https://petri.com/sql-like/