Freigeben über


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.

patternEin Muster, das mit dem angegebenen String verglichen werden soll.

escapeEin 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:

  1. Verwenden Sie die Vorgehensweise unter Ausführen einer Abfrage, die PrimitiveType-Ergebnisse zurückgibt.

  2. Ü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%'

Siehe auch