OKB-000260 | Operator LIKE

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:
% –beliebige Zeichenkette (inkl. Leerstring)
_ –ein beliebiges Zeichen
[ac] –a oder c
[a-c] –a bis c entsprechend der aktuellen Sortierreihenfolge, z.B. „ä“ LIKE „[a-c]“ für die Standart-Sortierreihenfolge
[^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%“

Beitrag bewerten