Frage:

Wie funktioniert der LIKE-Operator?

Antwort:

Der LIKE-Vergleich wird ähnlich wie in VB, allerdings mit anderen Sonderzeichen durchgeführt.

Vom Operator-Vorrang her gleichwertig mit den Vergleichsoperatoren, so dass Ausdrücke wie
„a“ & „b“ Like „_b“ And „b“ & „c“ Like „[a-c]“ & „[bcd]“ auch ohne Klammerung funktionieren. (Verhalten analog zu VB).


Folgende Sonderzeichen(-Kombinationen) werden unterstützt:

AusdruckErklärung
%beliebige Zeichenkette (inkl. Leerstring)
[ac]a oder c
[a-c]a bis c entsprechend der aktuellen Sortierreihenfolge, z.B. „ä“ LIKE „[a-c]“ für die Standart-Sortierreihenfolge
_ein beliebiges Zeichen
[^a]alles außer a
[^a-c]alles außer a bis c
[a-zA-Z]analog
[^a-zA-Z]analog
\nächstes Zeichen verliert seine eventuelle Sonderzeichen-Bedeutung, auch innerhalb von []
Extrem-Beispiele:
\\–\(einzige Möglichkeit, den Backslash zu kodieren)
[%_[]% oder _ oder [ (diese Sonderzeichen zählen in Klammern nicht)
[a\-b]a oder -oder b (Backslash hebt Sonderzeichen-Wirkung auf)
[a^]a oder ^ (^ gilt nur als Negation, wenn es als erstes Zeichen auftritt)
]] (schließende ohne öffnende Klammer gilt als einzelnes Zeichen)

Folgende Muster-Typen werden als fehlerhaft deklariert und liefern bei einem Vergleich immer FALSE:
abc\
[abc
[abc\
[a-\

Folgende bei der SQL-Server-Implementation existierende Sonderfälle werden explizit unterstützt:
[^] –^
[a-] –a oder-

Bei folgenden Mustern (nicht Mustertypen!) weicht das Verhalten vom SQL-Server vom Verhalten der Methode ab, da hier das Verhalten vom SQL-Server nicht erklärbar ist:
„-“ LIKE „[ –]“: SQL-Server liefert FALSE
„-“ LIKE „[ -\-]“: SQL-Server liefert FALSE
„-“ LIKE „[\–]“: SQL-Server liefert (korrekt) TRUE
„^“ LIKE „[^^]“:SQL-Server liefert TRUE
„^“ LIKE „[^\^]“:SQL-Server liefert (korrekt) FALSE
„^“ LIKE „[^a^]“:SQL-Server liefert (korrekt) FALSE

Ungültige Unicode-Zeichen (?): Werden beim SQL-Server nicht einmal beim Vergleich mit _ akzeptiert
Die Methode arbeitet für []-Muster noch ziemlich langsam, eine Performance-Verbesserung kann bei Bedarf durchgeführt werden.


Bei der Übersetzung nach SQL werden beide Strings einfach an den SQL-Server durchgereicht. Durch eine ESCAPE-Klausel beim Operator LIKE wird der Backslash als Sonderzeichen definiert.

Beispiel:
Alle GmbHs (alle Adressen mit dem Wort GmbH im Namen)
Adressen->Name Like "%GmbH%"

Was this helpful?

1 / 0

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen