TOP

SQL-Lektion 5. Platzhalter und reguläre Ausdrücke (LIKE)

Um Daten zu filtern, müssen wir oft nicht nach der genauen Übereinstimmung der Bedingung Stichproben ziehen, sondern nach einem Näherungswert. Das heißt, wenn wir beispielsweise nach einem Produkt suchen, dessen Name einem bestimmten Muster (regulärer Ausdruck) entspricht oder bestimmte Symbole oder Wörter enthält. Für solche Zwecke gibt es in SQL den Operator LIKE, der nach Näherungswerten sucht. Um ein solches Muster zu erstellen, werden Metazeichen (Sonderzeichen zur Suche nach einem Teil des Werts) verwendet, nämlich: „Prozentzeichen“ (%) oder Sternchen (*), „Unterstrich“ (_) oder „Fragezeichen“ (?). , „eckige Klammern“ ([ ]).


1. Metazeichen Prozentzeichen (%) oder Sternchen (*)

Wählen wir beispielsweise Datensätze aus unserer Tabelle aus, die sich nur auf Produkte beziehen, deren Name das Wort Ski enthält. Dazu erstellen wir eine passende Vorlage:

Run SQLSELECT * 
FROM Sumproduct 
WHERE Product LIKE '*Skis*'

Wie Sie sehen, hat das DBMS nur die Datensätze ausgewählt, bei denen die Spalte „Produkt“ Produkte enthielt, die das Wort „Skis“ enthielten.

In diesem Beispiel wird das Metazeichen Sternchen (*) verwendet, da MS Access das „Prozentzeichen“ (%) für den Operator LIKE nicht unterstützt.

2. Metazeichen Unterstrich (_) oder Fragezeichen (?)

Ein Unterstrich oder Fragezeichen wird verwendet, um ein einzelnes Zeichen in einem Wort zu ersetzen. Ersetzen wir alle Vokale im Wort Bikes durch ein „Fragezeichen“ (?) und sehen wir uns das Ergebnis an:

Run SQLSELECT * 
FROM Sumproduct 
WHERE Product LIKE 'B?k?s'
Wir haben das Metazeichen „Fragezeichen“ (?) verwendet, da MS Access den „Unterstrich“ (_) für den Operator LIKE nicht unterstützt.

3. Eckige Klammern für Metazeichen ([ ])

Das Metazeichen in eckigen Klammern ([ ]) wird verwendet, um gleichzeitig eine Reihe von Zeichen anzugeben, nach denen gesucht werden soll.

SELECT * 
FROM Sumproduct 
WHERE City LIKE '[TN]*'

Im obigen Beispiel haben wir Datensätze ausgewählt, deren Städtenamen im Feld City mit dem Buchstaben T oder N beginnen.

Das Metazeichen in eckigen Klammern ([ ]) wird im MySQL-Dialekt nicht unterstützt.

In diesem Fall können wir auch ein anderes Metazeichen verwenden, das das Gegenteil bewirkt. Fügen wir unserem regulären Ausdruck ein Ausrufezeichen (!) hinzu, das „ungleich“ (für MS Access) oder ein Leistungszeichen (^) (für andere DBMS) bedeutet.

SELECT * 
FROM Sumproduct 
WHERE City LIKE '[!TN]*'

Das heißt, die letzte von uns erstellte Abfrage lautet wie folgt: Wählen Sie alle Spalten aus der Sumproduct-Tabelle aus und nur die Datensätze, in denen die Namen der Städte im Feld City nicht mit den Buchstaben T oder N beginnen. Darüber hinaus stellen wir fest, dass Die Buchstabengruppe im Metazeichen „eckige Klammern“ entspricht nur einer Position im Text.

Wir können ein ähnliches Ergebnis erzielen, wenn wir den uns bereits bekannten Operator NOT verwenden, aber mit einem Ausrufezeichen (!) wird der Datensatz kürzer.