Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Daten abfragen und ändern » Daten abfragen » Die WHERE-Klausel: Zeilen angeben

 

Übereinstimmende Zeichenfolgen in der WHERE-Klausel

Die Musterübereinstimmung ist eine vielseitige Methode zur Identifikation von Zeichendaten. In SQL wird das Schlüsselwort LIKE für die Suche nach Mustern verwendet. Bei der Musterübereinstimmung werden mithilfe von Platzhalterzeichen verschiedene Kombinationen von Zeichen gesucht, die übereinstimmen.

Das Schlüsselwort LIKE zeigt, dass die darauf folgende Zeichenfolge ein Vergleichsmuster ist. LIKE wird mit Zeichendaten verwendet.

Die Syntax für LIKE ist:

Ausdruck [ NOT ] LIKE Übereinstimmungsausdruck

Der Ausdruck, der mit dem Übereinstimmungsausdruck identisch sein soll, kann folgende Sonderzeichen enthalten:

Sonderzeichen Bedeutung
% Passt zu jeder Zeichenfolge von 0 oder mehr Zeichen
_ Passt zu einem beliebigen Zeichen
[Bezeichner]

Der Bezeichner in eckigen Klammern kann folgende Formate haben:

  • Bereich   Ein Bereich hat die Form Bereichsangabe1-Bereichsangabe2, wobei Bereichsangabe1 für den Beginn eines Bereichs von Zeichen, der Bindestrich für einen Bereich und Bereichsangabe2 für das Ende eines Bereichs von Zeichen steht

  • Menge   Eine Menge kann jede diskrete Wertmenge in jeder Reihenfolge umfassen. Zum Beispiel:[a2bR].

Beachten Sie, dass der Bereich [a-f] sowie die Mengen [abcdef] und [fcbdae] dieselbe Wertgruppe zurückgeben.

[^Bezeichner] Das Einschaltungszeichen (^) vor einem Bezeichner gibt an, dass diese Angabe auszuschließen ist. [^a-f] bedeutet, nicht im Bereich a-f; [^a2bR] bedeutet, nicht a, 2, b oder R.

Sie können die Übereinstimmung der Spaltendaten mit Konstanten, Variablen oder anderen Spalten testen, die die Platzhalter enthalten, die in der Tabelle dargestellt wurden. Wenn Sie Konstanten verwenden, müssen Sie die Vergleichszeichenfolgen und die Zeichenfolge in Apostrophe setzen.

Beispiele

Alle nachfolgenden Beispiele benutzen LIKE mit der Spalte "Surname" in der Tabelle "Contacts". Abfragen haben folgende Form:

SELECT Surname
   FROM Contacts
   WHERE Surname LIKE Übereinstimmungsausdruck;

Das erste Beispiel wird eingegeben als:

SELECT Surname
   FROM Contacts
   WHERE Surname LIKE 'Mc%';
Vergleichsausdruck Beschreibung Rückgabe
'Mc%' Sucht alle Namen, die mit den Buchstaben Mc beginnen McEvoy
'%er' Sucht alle Namen, die mit "er" enden. Brier, Miller, Weaver, Rayner
'%en%' Sucht alle Namen, welche die Buchstaben en enthalten. Pettengill, Lencki, Cohen
'_ish' Sucht alle vierstelligen Namen, die mit ish enden. Fish
'Br[iy][ae]r' Sucht nach Brier, Bryer, Briar oder Bryar. Brier
'[M-Z]owell' Sucht alle Namen, die mit owell enden und die mit einem Buchstaben im Bereich M bis Z beginnen. Powell
'M[^c]%' Suche nach allen Namen, die mit "M" beginnen und nicht "c" als zweiten Buchstaben haben. Moore, Mulley, Miller, Masalsky
Platzhalterzeichen benötigen LIKE

Platzhalterzeichen ohne LIKE werden als Zeichenfolgenliterale und nicht als Muster interpretiert: Sie repräsentieren exakt ihre eigenen Werte. Die folgende Abfrage sucht alle Telefonnummern, die nur aus den vier Zeichen "415%" bestehen. Andere Telefonnummern, die mit 415 beginnen, werden nicht gefunden.

SELECT Phone
   FROM Contacts
   WHERE Phone = '415%';

Siehe auch Zeichenfolgenliterale.

LIKE mit Datums- und Zeitwerten verwenden

Sie können LIKE mit Datums- und Zeitfeldern sowie mit Zeichendaten verwenden. Wenn Sie LIKE mit Datums- und Zeitwerten verwenden, werden die Datumsangaben in das Standard-DATETIME-Format und dann in VARCHAR verwandelt.

Ein Merkmal der Verwendung von LIKE bei der Suche nach DATETIME-Werten besteht darin, dass ein Gleichheitstest sorgfältig programmiert werden muss, da Datums- und Zeitangaben verschiedene Bestandteile enthalten können.

Beispiel: Wenn Sie den Wert 9:20 und das aktuelle Datum in eine Spalte namens "arrival_time" einfügen, findet die folgende Klausel den Wert nicht, weil der Eintrag das Datum und die Uhrzeit enthält.

WHERE arrival_time = '9:20'

Die nachstehende Klausel würde hingegen den Wert 9:20 finden:

WHERE arrival_time LIKE '%09:20%'
NOT LIKE verwenden

Mit NOT LIKE können Sie dieselben Platzhalterzeichen verwenden wie mit LIKE. Um alle Telefonnummern in der Tabelle "Contacts" zu finden, die nicht 415 als Vorwahl haben, können Sie eine der folgenden Abfragen verwenden:

SELECT Phone
   FROM Contacts
   WHERE Phone NOT LIKE '415%';
SELECT Phone
   FROM Contacts
   WHERE NOT Phone LIKE '415%';
Unterstriche verwenden

Ein weiteres Sonderzeichen, das zusammen mit LIKE verwendet werden kann, ist der Unterstrich _. Er steht für exakt ein Zeichen. So stimmt beispielsweise das Muster BR_U% mit allen Namen überein, die mit BR beginnen und deren vierter Buchstabe ein U ist. Im Namen Braun entspricht der Unterstrich (_) dem Buchstaben A, und das % dem Buchstaben N. Siehe LIKE-Suchbedingung.