Maybaygiare.org

Blog Network

SQLShack

In diesem Artikel erfahren Sie, wie Sie den SQL LIKE-Operator in SQL Server mithilfe regulärer Ausdrücke verwenden, um Text zu finden und / oder zu bearbeiten. Wir beginnen mit dem Erlernen der Symbole und der grundlegenden Syntax der Verwendung regulärer Platzhalterausdrücke. Wir werden Zeichensätze und Wiederholungsausdrücke verwenden, um flexible Übereinstimmungsmuster zu erstellen, und dabei verschiedene Möglichkeiten zur Verwendung des LIKE-Operators untersuchen. Und schließlich werden wir im letzten Teil des Abschnitts einige der häufigsten und nützlichsten Beispiele für reguläre Ausdrücke untersuchen.

SQL ist die am häufigsten verwendete Sprache für die Arbeit mit Datenbanken. Wenn Sie einen Bericht entwerfen oder BI oder ein Berichtstool verwenden, erstellt die Software mit ziemlicher Sicherheit eine SQL-Abfrage hinter den Kulissen, die in der Datenbank ausgeführt wird und die ausgewählten Daten zurückgibt. Wenn wir nach bestimmten Daten oder Daten suchen, die bestimmten Kriterien entsprechen, stellt die where-Klausel das Toolset bereit, das Sie benötigen. Dies gibt eine Option zum Abfragen bestimmter Zeilen, nach denen wir suchen, anstelle der gesamten Tabelle.

Voraussetzungen

Laden Sie die AdventureWorks2014-Datenbank hier herunter, um die folgenden T-SQL-Beispiele zu testen.

Erste Schritte

Lassen Sie uns die SQL-Anweisungen mit dem LIKE-Schlüsselwort und Platzhalterzeichen durchgehen. Also, lasst uns anfangen, etwas über SQL WIE Operator zu lernen.

Verwenden von SQL-ÄHNLICHEN Platzhalterzeichen Beispiele

Reguläre Ausdrücke sind Muster, um zu beschreiben, wie Strings in einer WHERE-Klausel abgeglichen werden. Viele Programmiersprachen unterstützen reguläre Ausdrücke, die sich geringfügig von der Syntax des LIKE-Operators unterscheiden. Wenn wir uns in diesem Artikel auf reguläre Ausdrücke beziehen, beziehen wir uns auf die Muster, die mit dem SQL LIKE-Operator verwendet werden

Die folgende Tabelle enthält die vier verschiedenen Platzhalterzeichen. Weitere Beispiele finden Sie auch im Artikel SQL string functions for Data Munging (Wrangling).

Platzhalterzeichen

Beschreibung

%

Beliebiger String mit null oder mehr Zeichen im Suchmuster

Jede einzelne Zeichensuche mit dem angegebenen Muster

Jede einzelne Zeichensuche innerhalb des angegebenen Bereichs

Jede einzelne Zeichensuche nicht innerhalb des angegebenen Bereichs

Mit SQL WIE mit ‚%‘ Platzhalter zeichen

Das folgende SQL-Anweisung gibt alle Zeilen der Tabelle, wo ihr Nachname beginnt mit dem Buchstaben A. Geben wir den Buchstaben ‚A‘, das erste Zeichen, das in der Zeichenfolge sein muss, und verwenden Sie dann den Platzhalter ‚%‘, die Prozent.

1
2
3

WÄHLEN SIE TOP 10 *
VON Person.Person
WOBEI Vorname WIE ‚A%‘;

Sie sehen die Ausgabe, die die ersten 10 Zeilen der Personentabelle auflistet, in der der Vorname mit A beginnt und der Rest des Zeichens unbekannt ist.

Verwenden von SQL WIE beim Platzhalterzeichen „_“

Der Platzhalter Unterstrich dient zum Abgleichen eines einzelnen Zeichens. Die folgende SQL-Anweisung findet alle Telefonnummern, die eine Vorwahl haben, die mit 7 beginnt und in der Spalte phonenumber mit 8 endet. Wir haben auch ein Platzhalterzeichen am Ende des Suchmusters eingefügt, da wir uns nicht um den Rest der Zeichenfolgenwerte kümmern.

1
2
3
4
5
6
7

WÄHLEN SIE p.Vorname,
p.Nachname,
Telefonnummer
VON Person.PersonPhone ALS ph
INNER JOIN Person .Person ALS p AUF ph.BusinessEntityID = p.BusinessEntityID
WHERE ph.PhoneNumber LIKE ‚7_8%‘
ORDER BY p.LastName;

Die Ausgabe zeigt, dass die Ortsvorwahl, die mit 7 beginnt und mit 8 endet, aufgelistet ist.

Verwenden von SQL WIE bei den Platzhalterzeichen

Eckige Klammern ermöglichen es uns beispielsweise, mehrere einzelne Zeichen zu identifizieren, die sich an dieser bestimmten Position befinden würden. Nehmen wir zum Beispiel an, alle Zeilen aufzulisten, in denen Vornamen, dritte Zeichen mit I oder K beginnen. Anstatt mehrere ÄHNLICHE Bedingungen zu schreiben, können wir den Mustervergleichssatz an der dritten Position platzieren und im Quadrat schließen. Die Abfrage-Engine sucht zuerst nach ‚I‘ und dann nach ‚K‘.

Führen wir die folgende SQL-Anweisung aus

1
2
3

4

5
6
7
WÄHLEN SIE p.Vorname,
p.Nachname,
Telefonnummer
VON Person.PersonPhone ALS ph
INNER JOIN Person .Person ALS p AUF ph.BusinessEntityID = p.BusinessEntityID
WOBEI ph.PhoneNumber WIE ‚7_8%‘ und p.lastname wie ‚Ba%‘
ORDER BY p.LastName;

Die obige Abfrage kann mit OR Bedingung neu geschrieben werden. Es ist eher wie eine OR-Bedingung.

1
2
3
4
5
6
7

WÄHLEN SIE p.Vorname,
p.Nachname,
Telefonnummer
VON der Person.PersonPhone ALS ph
INNER JOIN Person .Person ALS p AUF ph.BusinessEntityID = p.BusinessEntityID
WOBEI die ph.PhoneNumber WIE ‚7_8%‘ und (p.lastname wie ‚Bai%‘ oder p.nachname;

In der Ausgabe können wir sehen, dass Nachnamen, bei denen das dritte Zeichen „I“ oder „k“ ist, aufgelistet sind

Verwenden von SQL WIE mit dem Platzhalterzeichen ‚^‘

Die folgende SQL-Anweisung zeigt alle Zeilen an, die nicht den Buchstaben haben, der mit A bis D im ersten Zeichen ihres Nachnamens beginnt. Platzieren Sie dazu das Tilde-Zeichen an der ersten Position des Musters. Es wird die Notation.

1
2
3
4
5

WÄHLEN SIE p.Vorname,
p.Nachname
VON der Person.Person p
WHERE LastName LIKE ‚%‘
SORTIEREN NACH p.lastname;

Wenn ich nun die obige Abfrage ausführe, werden wir sehen, dass alle zurückkommenden Namen kein A, B, C oder D als erstes Zeichen haben.

Verwenden von SQL NICHT WIE bei den Platzhalterzeichen

Die folgende SQL-Anweisung findet alle Personen, bei denen die Spalte Vorname mehr als 3 Zeichen enthält.

1
2
3
4

WÄHLEN SIE DISTINCT
firstname
VON der Person AUS.Person
WO Vorname NICHT GEFÄLLT „;

Die Ausgabe listet nur die Namen auf, bei denen die Länge des Vornamens mehr als 3 beträgt

Verwendung von SQL WIE bei der ESCAPE-Klausel

In der folgenden SQL-Anweisung wird die ESCAPE-Klausel verwendet, um das Zeichen ‘!‘, um die Bedeutung von ‚%‘ zu negieren, um die Zeichenfolge ‚100% Free‘ in der Spalte col1 der temporären Tabelle zu finden.

1
2
3
4
5
6
7
8
9
10
11
12

DROP TABLE IF EXISTS temp;
CREATE TABLE temp(col1 VARCHAR(100));
GO
INSERT INTO temp
VALUES(‚ApexSQL Refactor is 100% Free SQL Formatter tool‘), (‚ApexSQL Job is 10-15% off today only‘);
GO
SELECT *
FROM TEMP;
SELECT *
FROM temp
WHERE col1 LIKE ‚%100!% Kostenlos%’FLUCHT ‚!‘;
GO

Die Ausgabe listet nur die Werte auf, bei denen das Suchmuster ‚100% Free‘ mit dem Ausdruck col1 übereinstimmt.

Verwenden von SQL WIE bei der CASE-Anweisung

Die folgende SQL-Anweisung zieht alle Mitarbeiter heraus, die eine Telefonnummer haben, die wie drei-drei-vier Ziffern mit Bindestrichen dazwischen formatiert ist (999-999-9999). Das Muster wird dann mit der Spalte Telefonnummer verglichen, um die nationalen oder internationalen Kategorien abzuleiten.

Der Fallausdruck wird für das spezifische Muster ausgewertet, um den Telefonkategorietyp abzuleiten.

1
2
3
4
5
6
7
8
9

SELECT p.Vorname,
p.Nachname,
Telefonnummer,
CASE WHEN ph.Telefonnummer LIKE ‚–‚ then ‚Domestic Phone Number‘
ELSE ‚Internationale Telefonnummer‘
INDIEN Telefonnummer
VON der Person.PersonPhone ALS ph
INNER JOIN Person .Person ALS p AUF ph.BusinessEntityID = p.BusinessEntityID
ORDER BY p.LastName;

In der Ausgabe können wir sehen, dass die Nummer als national oder international klassifiziert ist. Die Spalte phonenumber wird mit dem Operator LIKE unter Verwendung der eckigen Klammer ausgewertet. Die Zahl Null bis Neun in der ersten Zeichenposition wird für das übereinstimmende Muster Null bis Neun ausgewertet, jede Zahl von Null bis Neun in der zweiten Zeichenposition und die dritte und dann die vierte Zeichenposition muss ein Bindestrich sein, und eine ähnliche Logik wird auf den Rest der Zeichen angewendet.

Verwendung von SQL WIE bei Dynamic SQL

Die folgende SQL-Anweisung gibt alle Mitarbeiter zurück, bei denen der Nachname mit dem Muster Barb übereinstimmt. Das Muster wird dynamisch erstellt und mit dem Ausdruck verglichen.

1
2
3
4
5
6
7

SELECT @hostname VARCHAR(20)= ‚Barb‘;
WÄHLEN SIE p.Vorname,
p.Nachname,
die.Stadt
VON der Person.Person p
TRITT der Person BEI.Adresse der ON p.BusinessEntityID = ’s.AddressId
WOBEI p.LastName WIE ‚%’+@LastName+’%‘;

Die Ausgabe listet die passenden Zeilen für das angegebene Muster Barb

Hinweis: Standardmäßig, CHAR injiziert nachfolgende Leerzeichen abhängig von der Länge des Feldes. Verwenden Sie RTRIM , um die nachfolgenden Leerzeichen zu unterdrücken, wenn Sie den Datentyp char verwenden.

In der folgenden SQL-Anweisung ist das Feld @eLastName vom Datentyp char. Sie können eine Verwendung der RTRIM-Funktion sehen, um die nachfolgenden Leerzeichen zu trimmen.

1
2
3
4
5
6
7

SELECT @hostname CHAR(20)= ‚Barb‘;
WÄHLEN SIE p.Vorname,
p.Nachname,
die.Stadt
VON der Person.Person p
TRITT der Person BEI.Adresse der ON p.BusinessEntityID = ’s.AddressId
WOBEI p.LastName WIE ‚%’+RTRIM(@LastName)+’%‘;

Verwendung von SQL Wie bei einer IF-Anweisung

In der folgenden SQL-Anweisung wird der Eingabewert für das spezifische Muster in der condition-Klausel mithilfe der IF-Anweisung ausgewertet.

1
2
3
4
5

DECLARE @RuleName NVARCHAR(MAX)= ‚SQL Server 2019 CTP ist für die Vorschau verfügbar‘;
IF @RuleName LIKE ‚SQL Server % CTP is available for preview‘
PRINT ‚gültige Eingabe gut!‘;
ELSE
PRINT ‚kein gültiges Gut!‘;

Die Eingabezeichenfolge wird für bestimmte Muster mit SQL wie Platzhalterausdruck ausgewertet und gibt eine gültige Eingabezeichenfolge zurück.

Das ist alles für jetzt!

Zusammenfassung

Bisher haben wir verschiedene Tipps und vier verschiedene Platzhalter (%,_, und ^] besprochen, die mit dem SQL LIKE Operator verfügbar sind. Es ist eine großartige Suchtechnik, um Zeichenfolgen mit den angegebenen Mustern abzugleichen oder bei denen wir uns nicht ganz sicher sind, wonach Sie suchen, auch bekannt als Fuzzy Search. Die verfügbaren Platzhalterzeichen machen den LIKE-Operator flexibler. Ich hoffe, Ihnen hat dieser Artikel über den SQL LIKE-Operator in SQL Server gefallen. Fühlen Sie sich frei, Fragen in den Kommentaren unten zu stellen.

  • Autor
  • Neueste Beiträge
Prashanth Jayaram
Ich bin ein Datenbanktechnologe mit mehr als 11 Jahren praktischer Erfahrung in Datenbanktechnologien. Ich bin Microsoft Certified Professional und mit einem Abschluss in Master of Computer Application gesichert.
Meine Spezialität liegt im Design & Implementierung von Hochverfügbarkeitslösungen und plattformübergreifender DB-Migration. Die Technologien, an denen derzeit gearbeitet wird, sind SQL Server, PowerShell, Oracle und MongoDB.
Alle Beiträge von Prashanth Jayaram anzeigen

Prashanth Jayaram
Neueste Beiträge von Prashanth Jayaram (alle anzeigen)
  • Ein kurzer Überblick über die Datenbanküberwachung in SQL – 28. Januar 2021
  • So richten Sie die Azure-Datensynchronisierung zwischen Azure SQL-Datenbanken -azure SQL Server – 20. Januar 2021
  • Ausführen von Import-/Exportvorgängen für Azure SQL-Datenbanken mit PowerShell – 14. Januar 2021

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.