[NOT] LIKE (Entity SQL)
Ermittelt, ob ein bestimmter Zeichen-String mit einem angegebenen Muster übereinstimmt.
[NOT] LIKE ( expression )
Argumente
- match
Ein Entity SQL-Ausdruck, 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.
Hinweise
Entity SQL-Ausdrücke, in denen der LIKE-Operator verwendet wird, werden ähnlich ausgewertet wie Ausdrücke, in denen Gleichheit als Filterkriterium verwendet wird. Entity SQL-Ausdrücke, in denen der LIKE-Operator verwendet wird, können jedoch sowohl Literale als auch Platzhalterzeichen enthalten.
In der folgenden Tabelle wird die Syntax des als Muster verwendeten string beschrieben.
Platzhalterzeichen | Beschreibung | Beispiel |
---|---|---|
% |
Jeder string mit null oder mehr Zeichen. |
|
_ (Unterstrich) |
Ein beliebiges einzelnes Zeichen. |
|
[ ] |
Beliebiges einzelnes Zeichen im angegebenen Bereich ([a-f]) oder in der angegebenen Menge ([abcdef]). |
|
[^] |
Beliebiges einzelnes Zeichen, das nicht im angegebenen Bereich ([^a-f]) oder der angegebenen Menge ([^abcdef]) liegt. |
|
Hinweis |
---|
Der LIKE-Operator und die ESCAPE-Klausel von Entity SQL können nicht auf System.DateTime-Werte und 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 Syntax für die Musterzeichenfolge ist in Entity SQL dieselbe wie in Transact-SQL.
Zu einem Muster können normale Zeichen und Platzhalter gehören. Bei einem Mustervergleich müssen normale Zeichen exakt mit den im string angegebenen Zeichen übereinstimmen. Platzhalterzeichen können 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 Platzhalterzeichen ist, muss es mithilfe der ESCAPE-Klausel von Entity SQL geschützt werden, damit die Suche durchgeführt werden kann. 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. Es können alle Zeichen als Escapezeichen verwendet werden außer Entity SQL-Platzhalterzeichen und den eckigen Klammern ([ ]
). Im vorherigen Beispiel wird das Ausrufezeichen (!) als Escapezeichen verwendet.
Beispiel
In den folgenden beiden Entity SQL-Abfragen werden die Operatoren LIKE und ESCAPE verwendet, um zu überprüfen, 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 Name
-Werte zurückgeben, die mit dem Wort Down
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 das Verfahren unter Gewusst wie: Ausführen einer Abfrage, die PrimitiveType-Ergebnisse zurückgibt (EntityClient).
Übergeben Sie die folgende Abfrage als Argument an die
ExecutePrimitiveTypeQuery
-Methode:
// LIKE and ESCAPE
// If an AdventureWorksEntities.Product contained a Name
// with the value 'Down_Tube', the following query would find that
// value.
Select value P.Name FROM AdventureWorksEntities.Product
as P where P.Name LIKE 'DownA_%' ESCAPE 'A'
// LIKE
Select value P.Name FROM AdventureWorksEntities.Product
as P where P.Name like 'BB%'