PoprzedniaWyżejGłównaSpis treściIndex hasełZnajdźBokGora
BokGora

Google
 

Operator Like


Operator Like używany jest do porównywania łańcuchów.

Składnia:

[Wynik=]Łańcuch Like Maska

Wynik (Opcjonalne) zmienna numeryczna
Łańcuch (Wymagane) wyrażenie łańcuchowe
Maska (Wymagane) wyrażenie łańcuchowe zawierające maskę porównania

Jeżeli Łańcuch pasuje do Maski zostanie zwrócone True, w przeciwnym przypadku zostanie zwrócone False.
Jeżeli Łańcuch lub Maska ma wartość Null, zostanie zwrócone Null.
Sposób porównywania przez operator Like jest zależny od ustawień wykonanych rozkazem Option Compare. Domyślną metodą porównania jest Option Compare Binary.

Rezultat porównania Option Compare Binary jest oparty na wewnętrznej binarnej reprezentacji znaków. W Microsoft Windows kolejność jest określona przez stronę kodową. Typowy porządek binarny:

A < b < e < z < a < b < e < z < Ŕ < Ę < Ř < ŕ < ę < ř <

A < b < e < z < a < b < e < z < Ś < Ź < ś < ź < Ł < Ą < Ż < ł < ą < ż < Ć < Ę < Ń < Ó < ć < ę < ń < ó <
(w języku polskim)

Rezultat porównania Option Compare Text oparty jest na porządku określonym przez ustawienia lokalne systemu, bez względu na wielkość liter. Typowy porządek Option Compare Text:

(A=a) < ( Ŕ=ŕ) < (b=b) < (e=e) < (Ę=ę) < (z=z) < (Ř=ř)

(A=a) < (Ą=ą) < (b=b) < (e=e) < (Ę=ę) < (z=z) < (Ż=ż)
(w języku polskim)


Zestaw specjalnych znaków pozwala na tworzenie rozbudowanych Mask porównania. Można używać "białych znaków" określających pojedynczy znak, szereg znaków, listę lub zakres znaków w dowolnych kombinacjach.

Znak Znaczenie
? dowolny pojedynczy znak
* zero lub więcej dowolnych znaków
# dowolna cyfra (0-9)
[ListaZnaków] pojedynczy znak zawarty na ListaZnaków
[!ListaZnaków] pojedynczy znak nie zawarty na ListaZnaków
- zakres znaków

Zestaw jednego lub więcej znaków na ListaZnaków zawarty w nawiasach kwadratowych ([ ]) może być użyty do określenia pojedynczego znaku w Łańcuchu i może zawierać prawie wszystkie znaki włączając cyfry.

Aby uzyskać w Masce jeden ze znaków specjalnych: otwierający nawias kwadratowy ([), znak zapytania (?), znak liczby (#) i gwiazdka (*) należy zamknąć go w nawiasach kwadratowych.
Zamykający nawias kwadratowy (]) nie może być wykorzystywany wewnątrz listy, ale może być wykorzystywany poza nią jako pojedynczy znak.

Znak myślik (-) może być używany do określenia zakresu znaków pomiędzy górnym i dolnym zakresem. Np. [A-Z] określa znak należący do zakresu dużych liter od A do Z. Jeżeli powinno zostać użytych kilka zakresów należy umieścić je w nawiasie kwadratowym bez znaków separujących, np. [A-E c-g].

Znaczenie poszczególnych zakresów jest zależne od wybranego porządku znaków (zależnego od ustawień Option Compare i lokalnych ustawień strony kodowej).
Np. użycie Option Compare Binary z zakresem [A-C] powoduje użycie znaków A, B i C.
Użycie Option Compare Text z zakresem [A-C], wymusi sprawdzenie znaków A, a, Ą, ą, B, b, C, c. Zakres ten nie obejmuje znaków Ć i ć, które znajdują się poza górnym zakresem (za C).

Obowiązujące zasady dotyczące tworzenia Maski:
  • Wykrzyknik (!) na początku ListyZnaków oznacza, że poszukiwany jest dowolny znak nie występujący na podanej LiścieZnaków. Jeżeli wykrzykik zostanie użyty wewnątrz nawiasów kwadratowych [!], oznacza poszukiwany znak wykrzyknika.
  • Znak myślnika (-) oznacza poszukiwany znak myślnika, jeżeli znajduje się na początku (za wykrzyknikiem, jeżeli jest użyty) lub na końcu listy znaków. W innej pozycji traktowany jest jako znak określający zakres.
  • Jeżeli zostanie określony zakres znaków, musi on być w porządku rosnącym (od najmniejszego do największego). [A-Z] jest poprawnym zakresem, natomiast [Z-A] nie.
  • Sekwencja znaków [] traktowana jest jako łańcuch o zerowej długości ("").

W niektórych językach istnieją specjalne znaki w alfabecie reprezentujące dwa oddzielne znaki. Np. w niektórych językach znak "ć" jest wykorzystywany do określenia występujących po sobie znaków "a" i "e". Operator Like rozpoznaje takie pojedyncze znaki specjalne i dwa odpowiednie pojedyncze znaki.

Jeżeli język wykorzystujący znaki specjalne zostanie określony w lokalnych ustawieniach systemowych, wystąpienie pojedynczego znaku specjalnego w Masce lub Łańcuchu jest równoważne z występieniem 2-znakowej sekwecji w drugim łańcuchu. Podobnie pojedynczy znak specjalny zawarty w nawiasach kwadratowych w Masce (pojedyczno, w liście lub zakresie) odpowiada sekwencji 2-znakowej w Łańcuchu.


Przykład użycia Operatora Like:

Dim varWynik
varWynik="aBBBa" Like "a*a"  'varWynik=True
varWynik="F" Like "[A-Z]"  'varWynik=True
varWynik="F" Like "[!A-Z]"  'varWynik=False
varWynik="a2a" Like "a#a"  'varWynik=True
varWynik="aM5b" Like "a[L-P]#[!c-e]"  'varWynik=True
varWynik="BAT123khg" Like "B?T*"  'varWynik=True
varWynik="CAT123khg" Like "B?T*"  'varWynik=False
varWynik="-l?p" Like "[-p]?[l-q ?-A c-n][a-c r p]"  'varWynik=True
  ' "-" należy do "[-p]"
  ' "l" należy do "?"
  ' "?" należy do "[l-q ?-A c-n]"
  ' "p" należy do "[a-c r p]"

varWynik="-l?p" Like "[-p]?[!l-q [!?-A] c-n][a-c r p]"  'varWynik=False


na górę strony...


Google
 
Poprzednia | Wyżej | Strona główna | Spis Treści | Index haseł | Opis VB

BokDol
PoprzedniaWyżejGłównaSpis treściIndex hasełZnajdźBokGora
BokGora