2014-06-18 90 views
8

Jestem programistą systemu Android, a ostatnio spotkałem się z klauzulą ​​GLOB w SQLite. Nie mogę zrozumieć, dlaczego potrzebujemy GLOB, ponieważ LIKE już istnieje.Dlaczego potrzebujemy klauzuli GLOB w SQLite?

Obie klauzule mają symbole wieloznaczne do reprezentowania jednego i wielu znaków. Jedyną różnicą jest to, że GLOB rozróżnia wielkość liter.

Ale czy to wszystko? Czy są jakieś pytania, w których LIKE jest złym lub niewłaściwym wyborem? Czy są przypadki, w których absolutnie musimy używać GLOBE vs LIKE lub na odwrót?

Odpowiedz

18

Rozróżnianie wielkości znaków jest przydatne samo z siebie, ponieważ działa to lepiej w przypadku normalnych indeksów.

Dodatkowo GLOB obsługuje klas postaci:

globowania zasady:

* pasuje dowolny ciąg zero lub więcej znaków.

? Pasuje dokładnie jedna postać.

[...] Pasuje do jednego znaku z załączonej listy znaków.

[^...] Dopasowuje jeden znak, nie znajdujący się na załączonej liście.

Przy dopasowywaniu [...] i [^...], A ] postać może być zawarte na liście poprzez to pierwszy znak po [ lub ^. Zakres znaków można ustawić za pomocą . Przykład: [a-z] dopasowuje każdą pojedynczą małą literę. Aby dopasować wartość -, należy ją ustawić jako ostatnią na liście.

+1

dzięki @CL. Wygląda na to, że jedynym dodatkiem jest minimalna funkcjonalność REGEX. – kouretinho