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:
- 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]. |
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.
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%';

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 '____-%';

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]%';

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.
USE AdventureworksLT2019; SELECT LastName, FirstName FROM SalesLT.Customer WHERE LastName LIKE '[C-L]ee'

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]%';

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%';

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 ‘%[ [ ]%’ | [ |
- 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.

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/