LIKE (Entity SQL)
Ermittelt, ob ein bestimmter Zeichen-String
mit einem angegebenen Muster übereinstimmt.
Syntax
match [NOT] LIKE pattern [ESCAPE escape]
Argumente
match
Ein Entitätsausdruck SQL, der zu einem String
ausgewertet wird.
pattern
Ein Muster, das mit dem angegebenen String
verglichen werden soll.
escape
Ein Escapezeichen.
NOT Legt fest, dass das Ergebnis von LIKE negiert werden soll.
Rückgabewert
true
, wenn string
mit dem Muster übereinstimmt, andernfalls false
.
Bemerkungen
Entitäts-SQL-Ausdrücke, die den LIKE-Operator verwenden, werden auf die gleiche Weise ausgewertet wie Ausdrücke, die Gleichheit als Filterkriterien verwenden. Entitäts-SQL-Ausdrücke, die den LIKE-Operator verwenden, können jedoch sowohl Literale als auch Wildcardzeichen enthalten.
In der folgenden Tabelle wird die Syntax des als Muster verwendeten string
beschrieben.
Platzhalterzeichen | BESCHREIBUNG | Beispiel |
---|---|---|
% | Jeder string mit null oder mehr Zeichen. |
title like '%computer%' gibt alle Titel zurück, die das Wort "computer" irgendwo im Titel enthalten. |
_ (Unterstrich) | Ein einzelnes Zeichen. | firstname like '_ean' findet alle vier Buchstaben Vornamen, die mit "ean wie Dean oder Sean enden. |
[ ] | Beliebiges einzelnes Zeichen im angegebenen Bereich ([a-f]) oder in der angegebenen Menge ([abcdef]). | lastname like '[C-P]arsen' gibt Nachnamen zurück, die mit „arsen“ enden und mit einem einzelnen Zeichen zwischen C und P beginnen wie Carsen oder Larsen. |
[^] | Beliebiges einzelnes Zeichen, das nicht im angegebenen Bereich ([^a-f]) oder der angegebenen Menge ([^abcdef]) liegt. | lastname like 'de[^l]%' gibt alle Nachnamen zurück, die mit „de“ beginnen und in denen auf „de“ nicht der Buchstabe „I“ folgt. |
Hinweis
Der Entity SQL LIKE-Operator und die ESCAPE-Klausel können nicht auf System.DateTime
- oder System.Guid
-Werte angewendet werden.
LIKE unterstützt Mustervergleiche im ASCII- und Unicode-Format. Wenn alle Parameter ASCII-Zeichen sind, wird ein ASCII-Mustervergleich ausgeführt. Wenn eines oder mehrere der Argumente von einem Unicode-Datentyp sind, werden alle Argumente in Unicode konvertiert, und ein Unicode-Mustervergleich wird durchgeführt. Bei der Verwendung von Unicode mit dem LIKE-Operator werden nachfolgende Leerzeichen berücksichtigt. Wird nicht der Typ Unicode verwendet, werden nachfolgende Leerzeichen ignoriert. Die Musterzeichenfolgensyntax von Entität SQL entspricht dem von Transact-SQL.
Ein Muster kann normale Zeichen und Platzhalterzeichen einschließen. Bei einem Mustervergleich müssen normale Zeichen exakt mit den im string
angegebenen Zeichen übereinstimmen. Platzhalterzeichen können jedoch mit beliebigen Teilen der Zeichenfolge übereinstimmen. Wenn der LIKE-Operator mit Platzhalterzeichen verwendet wird, ist er flexibler als die Zeichenfolgen-Vergleichsoperatoren „=“ und „!=“.
Hinweis
Bei Abfragen für einen bestimmten Anbieter können anbieterspezifische Erweiterungen verwendet werden. Solche Konstrukte können jedoch von anderen Anbietern anders behandelt werden. SqlServer unterstützt beispielsweise Muster der Form [erstes Zeichen-letztes Zeichen] und [^erstes Zeichen-letztes Zeichen], wobei die erste Form mit genau einem Zeichen zwischen "erstes Zeichen" und "letztes Zeichen" und die zweite Form mit genau einem Zeichen, das nicht zwischen "erstes Zeichen" und "letztes Zeichen" liegt, übereinstimmt.
Escape
Mithilfe der ESCAPE-Klausel kann nach Zeichenfolgen gesucht werden, die einen oder mehrere der im vorherigen Abschnitt beschriebenen speziellen Platzhalterzeichen enthalten. Nehmen Sie z. B. an, dass im Titel mehrerer Dokumente das Literal "100%" enthalten ist und Sie diese Dokumente finden möchten. Da das Prozentzeichen (%) ein Wildcardzeichen ist, müssen Sie es mithilfe der Entity SQL ESCAPE-Klausel escapen, um die Suche erfolgreich auszuführen. Im Folgenden sehen Sie ein Beispiel für diesen Filter.
"title like '%100!%%' escape '!'"
In diesem Suchausdruck wird das Platzhalterzeichen "%", das unmittelbar auf das Ausrufezeichen (!) folgt, als Literal und nicht als Platzhalterzeichen behandelt. Sie können ein beliebiges Zeichen als Escapezeichen mit Ausnahme der Platzhalterzeichen in Entity SQL und der eckigen Klammer ([ ]
) verwenden. Im vorherigen Beispiel wird das Ausrufezeichen (!) als Escapezeichen verwendet.
Beispiel
Die folgenden beiden Entity SQL-Abfragen verwenden die LIKE- und ESCAPE-Operatoren, um zu bestimmen, ob eine bestimmte Zeichenfolge mit einem angegebenen Muster übereinstimmt. Mit der ersten Abfrage wird nach einem Name
gesucht, der mit den Zeichen Down_
beginnt. In dieser Abfrage wird die ESCAPE-Option verwendet, da der Unterstrich (_
) ein Platzhalterzeichen ist. Ohne Angeben der ESCAPE-Option würde die Abfrage alle -Werte zurückgeben, die mit dem Wort beginnen, gefolgt von einem einzelnen Zeichen, das kein Unterstrich ist. Die Abfragen basieren auf dem AdventureWorks Sales-Modell. Führen Sie folgende Schritte aus, um diese Abfrage zu kompilieren und auszuführen:
Verwenden Sie die Vorgehensweise unter Ausführen einer Abfrage, die PrimitiveType-Ergebnisse zurückgibt.
Übergeben Sie die folgende Abfrage als Argument an die
ExecutePrimitiveTypeQuery
-Methode:
-- LIKE and ESCAPE
-- If an AdventureWorksEntities.Products contained a Name
-- with the value 'Down_Tube', the following query would find that
-- value.
Select value P.Name FROM AdventureWorksEntities.Products AS P
WHERE P.Name LIKE 'DownA_%' ESCAPE 'A'
-- LIKE
Select value P.Name FROM AdventureWorksEntities.Products AS P
WHERE P.Name LIKE 'BB%'