Dies ist die Syntax für die LIKE-Suchbedingung:
expression [ NOT ] LIKE pattern [ ESCAPE escape-character ]
expression Die zu durchsuchende Zeichenfolge.
pattern Das Muster, nach dem in expression gesucht werden soll.
Escapezeichen Das Zeichen, das als Escapezeichen für Sonderzeichen wie Unterstriche oder Prozentzeichen benutzt werden soll.
Die LIKE-Suchbedingung versucht, eine Übereinstimmung zwischen expression und pattern zu finden. Sie ergibt TRUE, FALSE oder UNKNOWN.
Die Suchbedingung wird mit TRUE ausgewertet, wenn expression mit pattern übereinstimmt (wenn nicht NOT angegeben wurde). Falls entweder expression oder pattern der NULL-Wert ist, wird diese Suchbedingung mit UNKNOWN ausgewertet. Das Schlüsselwort NOT kehrt die Bedeutung der Suchbedingung um, lässt UNKNOWN aber unverändert.
expression wird als CHAR- oder NCHAR-Zeichenfolge interpretiert. Der gesamte Inhalt von expression wird für die Suche nach Übereinstimmungen verwendet. Auch pattern wird als CHAR- oder NCHAR-Zeichenfolge interpretiert und kann eine beliebige Anzahl von Platzhalterzeichen enthalten, die in der folgenden Tabelle aufgelistet sind:
Platzhalterzeichen | Gefunden |
---|---|
_ (Unterstrich) | Ein Zeichen. Beispiel: a_ finden ab und ac, nicht aber a.
|
% (Prozent) | Eine Zeichenfolge mit null oder mehr Zeichen. Beispiel: bl% findet bl und bla.
|
[] | Ein einzelnes Zeichen im angegebenen Bereich oder der angegebenen Menge. Beispiel: T[oi]m findet Tom oder Tim.
|
[^] | Ein einzelnes Zeichen, das nicht im angegebenen Bereich oder der angegebenen Menge enthalten ist. Beispiel: M[^c] findet Mb und Md, aber nicht Mc.
|
Alle anderen Zeichen müssen genau übereinstimmen.
Beispiel: Die folgende Suchbedingung ergibt TRUE für eine Zeile, in der der Name mit dem Buchstaben a beginnt und den Buchstaben b als zweitletztes Zeichen hat.
... name LIKE 'a%b_' |
Wenn ein escape-character angegeben wurde, muss es mit einem Ein-Byte-CHAR- oder NCHAR-Zeichen ausgewertet werden. Das Escapezeichen kann vor einem Prozent-, einem Unterstrich-Zeichen, einer linken eckigen Klammer oder einem anderen Sonderzeichen in pattern stehen, um zu verhindern, dass das Sonderzeichen eine spezielle Bedeutung hat. Wenn ein Escapezeichen gesetzt wird, werden Prozentzeichen und Unterstriche als Zeichen gefunden.
Alle Muster bis zu 126 Byte werden unterstützt. Muster mit mehr als 126 Byte, die keine Platzhalterzeichen enthalten, werden nicht unterstützt. Die Anzahl der Byte, die für die Darstellung des Musters verwendet werden, hängt davon ab, ob das Muster CHAR oder NCHAR ist.
Suche nach | Beispiel | Zusätzliche Informationen |
---|---|---|
Eine Zeichenmenge | LIKE 'sm[iy]th' |
Die Suche einer Menge von Zeichen wird festgelegt, indem die Zeichen innerhalb von eckigen Klammern aufgelistet werden. In diesem Beispiel findet die Suchbedingung smith und smyth. |
Ein Zeichenbereich | LIKE '[a-r]ough' |
Die Suche nach einem Bereich von Zeichen wird festgelegt, indem die Bereichsgrenzen innerhalb von eckigen Klammern durch einen Bindestrich getrennt angegeben werden. In diesem Beispiel findet die Suchbedingung bough und rough, aber nicht tough. Der Bereich der Zeichen [a-z] wird als "größer als oder gleich mit a und kleiner als oder gleich mit z" interpretiert, wobei die Vorgänge "größer als" und "kleiner als" innerhalb der Kollation der Datenbank ausgeführt werden. Die untere Bereichsgrenze muss vor der oberen Bereichsgrenze stehen. Beispiel: |
Bereiche und Mengen kombiniert | ... LIKE '[a-rt]ough' |
Sie können Bereiche und Mengen innerhalb eckiger Klammern kombinieren. In diesem Beispiel findet Das Muster "[a-rt]" wird als "Genau ein Zeichen, das entweder im Bereich von a bis inklusive r liegt oder t ist" interpretiert. |
Ein Zeichen außerhalb des Bereichs | ... LIKE '[^a-r]ough' |
Mit dem Einschaltungszeichen (^) wird ein Bereich von Zeichen festgelegt, der von einer Suche ausgeschlossen ist. In diesem
Beispiel findet Das Einschaltungszeichen negiert den Rest des Inhalts der eckigen Klammern. Der Klammerausdruck [^a-rt] wird als "Genau ein Zeichen, das nicht im Bereich von a bis inklusive r liegt oder nicht t ist" interpretiert. |
Suchmuster mit nachgestellten Leerzeichen | '90 ' , '90[ ]' und '90_' |
Wenn Ihr Suchmuster nachgestellte Leerzeichen enthält, bringt der Datenbankserver das Suchmuster nur mit Werten in Übereinstimmung, die Leerzeichen enthalten – es wird nicht mit Leerzeichen aufgefüllt. Die Suchmuster "90 ", "90[ ]" und "90_" stimmen z.B. mit dem Ausdruck "90 " überein, nicht aber mit "90", auch wenn der geprüfte Wert in einer CHAR- oder VARCHAR-Spalte steht, die drei oder mehr Zeichen breit ist. |
Jedes einzelne Zeichen in eckigen Klammern bedeutet genau dieses Zeichen. Beispiel: [a]
entspricht nur dem Zeichen a. [^]
entspricht nur dem Einschaltungszeichen, [%]
entspricht nur dem Prozentzeichen (das Prozentzeichen steht in diesem Fall nicht als Platzhalter) und [_]
entspricht nur dem Unterstrich-Zeichen. [[]
entspricht ebenso nur dem Zeichen [.
Andere Spezialfälle:
Das Muster [a-]
entspricht dem Zeichen a oder -.
Das Muster []
findet nie eine Entsprechung und gibt nie Zeilen zurück.
Die Muster [
oder [abp-q
geben Syntaxfehler zurück, weil eine geschlossene eckige Klammer fehlt.
Platzhalterzeichen können nicht innerhalb von eckigen Klammern verwendet werden. Das Muster [a%b]
findet a, % oder b.
Sie können das Einschaltungszeichen nur als erstes Zeichen in der eckigen Klammer zum Negieren von Bereichen verwenden. Das
Muster [a^b]
findet a, ^ oder b.
Wenn die Kollation der Datenbank Groß-/Kleinschreibung berücksichtigt, tut die Suchbedingung dies ebenfalls. Wenn Sie eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung mit einer Kollation durchführen möchten, in der die Groß- und Kleinschreibung berücksichtigt wird, müssen Sie Groß- und Kleinbuchstaben eingeben. Die folgende Suchbedingung ergibt zum Beispiel für die Zeichenfolgen Bough, rough und TOUGH den Wert TRUE.
LIKE '[a-zA-Z][oO][uU][gG][hH]' |
Vergleiche werden Zeichen für Zeichen ausgeführt, im Gegensatz zum Gleichheitsoperator (=) und zu anderen Operatoren, bei
denen der Vergleich Zeichenfolge für Zeichenfolge erfolgt. Wenn beispielsweise ein Vergleich in einer UCA-Kollation ausgeführt
wird (CHAR oder NCHAR mit Kollationseinstellung UCA) ist 'Æ'='AE'
TRUE, aber 'Æ' LIKE 'AE'
ist FALSE.
Bei einem Zeichen-für-Zeichen-Vergleich muss jedes einzelne Zeichen im gesuchten Ausdruck mit einem einzelnen Zeichen (entsprechend der Zeichenäquivalenz der Kollation) oder einem Platzhalterzeichen im LIKE-Ausdruck übereinstimmen.
LIKE-Suchbedingungen können verwendet werden, um CHAR- und NCHAR-Zeichenfolgen zu vergleichen. In diesem Fall wird die Zeichensatzkonvertierung so durchgeführt, dass der Vergleich mit einem gemeinsamen Datentyp erfolgt. Danach wird ein Zeichen-für-Zeichen-Vergleich durchgeführt.
Sie können expression oder pattern als NCHAR-Zeichenfolgenliteral angeben, indem Sie den in Anführungszeichen gesetzten Wert mit dem Präfix N versehen (zum
Beispiel expression LIKE N'pattern'
). Sie können auch die CAST-Funktion verwenden, um das Muster in CHAR oder NCHAR umzuwandeln (z.B. expression LIKE CAST(pattern AS datatype)
.
Die Semantik eines LIKE-Musters ändert sich nicht, wenn die Datenbank mit Leerzeichen aufgefüllt ist, da die Suche nach Übereinstimmungen
von expression mit pattern einen Zeichen-für-Zeichen-Vergleich von links nach rechts erfordert. Während der Auswertung erfolgt keine zusätzliche Auffüllung
mit Leerzeichen für den Wert von expression oder pattern. Der Ausdruck a1
findet daher das Muster a1, aber nicht die Muster 'a1 ' (a1, mit Leerstelle danach) oder a1_.
SQL/2008 Die Suchbedingung LIKE ist eine Kernfunktion des SQL/2008-Standards. Es gibt jedoch feine Unterschiede im Verhalten gegenüber dem Standard, weil SQL Anywhere Kollationen ohne Berücksichtigung von Groß- und Kleinschreibung und das Auffüllen mit Leerzeichen unterstützt.
SQL Anywhere unterstützt die optionale SQL-Sprachenfunktion F281, die zulässt, dass das Muster und Escapeausdrücke beliebige Ausdrücke sein können, die zum Ausführungszeitpunkt ausgewertet werden. Funktion F281 lässt auch zu, dass expression ein komplexerer Ausdruck ist als eine einfache Spaltenreferenz.
Die Verwendung von Zeichenbereichen und Zeichenmengen in eckigen Klammern [] ist eine Erweiterung des Herstellers.
SQL Anywhere unterstützt SQL/2008-Funktion T042, die zulässt, dass LIKE-Suchbedingungen Zeichenfolgenausdrücke referenzieren, die LONG VARCHAR-Werte sind.
LIKE-Suchbedingungen, die NCHAR-Zeichenfolgenausdrücke oder Muster angeben, gehören zur optionalen SQL-Sprachenfunktion F421 des ANSI SQL/2008-Standards.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |