Dies ist die Syntax für die LIKE-Suchbedingung:
Ausdruck [ NOT ] LIKE Muster [ ESCAPE Escapezeichen ]
Ausdruck Die zu durchsuchende Zeichenfolge.
Muster Das Muster, nach dem in Ausdruck gesucht werden soll.
Escapezeichen Das Zeichen, das als Escapezeichen für Sonderzeichen wie Unterstriche oder Prozentzeichen benutzt werden soll. Das Standard-Escapezeichen ist das Nullzeichen, das in einem Zeichenfolgenliteral als '\x00' angegeben werden kann.
Die Suchbedingung LIKE versucht, eine Übereinstimmung zwischen Ausdruck und Muster zu finden. Sie ergibt TRUE, FALSE oder UNKNOWN.
Die Suchbedingung wird mit TRUE ausgewertet, wenn Ausdruck mit Muster übereinstimmt (wenn nicht NOT angegeben wurde). Falls entweder Ausdruck oder Muster einen NULL-Wert darstellt, wird diese Suchbedingung mit UNKNOWN ausgewertet. Das Schlüsselwort NOT kehrt die Bedeutung der Suchbedingung um, lässt UNKNOWN aber unverändert.
Ausdruck wird als CHAR- oder NCHAR-Zeichenfolge interpretiert. Der gesamte Inhalt von Ausdruck wird für die Suche nach Übereinstimmungen benutzt. Auch Muster wird als CHAR- oder NCHAR-Zeichenfolge interpretiert und kann eine beliebige Anzahl von Wildcard-Zeichen enthalten, die in der folgenden Tabelle aufgelistet sind:
Wildcard-Zeichen | 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 Escapezeichen 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 Muster 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 Wildcard-Zeichen enthalten, werden nicht unterstützt. Muster mit Wildcard-Zeichen, die länger als 126 Byte sind, werden unterstützt, je nach dem Inhalt des Musters. 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 Kollatierung der Datenbank ausgeführt werden. Weitere Hinweise zur Bereichssuche finden Sie unter Unterschiede im Zeichenvergleich von LIKE, REGEXP und SIMILAR TO. 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.
Wildcard-Zeichen 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 Datenbankkollatierung Groß-/Kleinschreibung berücksichtigt, beachtet die Suchbedingung ebenfalls die Groß- und Kleinschreibung. Um eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung mit einer Kollatierung durchzuführen, 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 durchgeführt, im Unterschied zum Gleichheitsoperator (=) und zu anderen Operatoren,
bei denen der Vergleich Zeichenfolge-für-Zeichenfolge erfolgt. Beispiel: Wenn ein Vergleich in einer UCA-Kollatierung erfolgt
(CHAR oder NCHAR mit Kollatierungseinstellung 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 (unter Heranziehung der Zeichenäquivalenz der Kollatierung) oder einem Wildcard-Zeichen im LIKE-Ausdruck übereinstimmen.
Einen Vergleich der Auswertung von Suchmustern und Bereichen durch LIKE, SIMILAR TO und REGEXP finden Sie unter Die Suchbedingungen LIKE, REGEXP und SIMILAR TO.
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. Weitere Hinweise finden Sie unter Vergleiche zwischen CHAR und NCHAR.
Sie können Ausdruck oder Muster als NCHAR-Zeichenfolgenliteral angeben, indem Sie den in Anführungszeichen gesetzten Wert mit dem Präfix N versehen (zum
Beispiel Ausdruck LIKE N'Muster'
). Sie können auch die CAST-Funktion verwenden, um das Muster auf CHAR oder NCHAR umzuwandeln (z.B. Ausdruck LIKE CAST(Muster AS Datentyp)
.
Weitere Hinweise finden Sie unter Zeichenfolgenliterale und CAST-Funktion [Datentypkonvertierung].
Die Semantik eines LIKE-Musters ändert sich nicht, wenn die Datenbank mit Leerzeichen aufgefüllt ist, da die Suche nach Übereinstimmungen
von Ausdruck mit Muster 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 Ausdruck oder Muster. Der Ausdruck a1
findet daher das Muster a1, aber nicht die Muster 'a1 ' (a1, mit Leerstelle danach) oder a1_.
Die Suchbedingung LIKE ist eine Kernfunktion des ANSI SQL/2003-Standards.
SQL Anywhere unterstützt ANSI SQL/2003 Funktion F281, die zulässt, dass das Muster und Escape-Ausdrücke arbiträre Ausdrücke sein können, die zum Ausführungszeitpunkt ausgewertet werden. Funktion F281 lässt auch zu, dass Ausdruck 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 ANSI SQL/2003 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 zu Funktion F421 des ANSI SQL/2003-Standards.
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |