poniedziałek, 24 września 2018

SQLite – klauzula GLOB


SQLite – klauzula GLOB

Operator GLOB  służy do dopasowywania tylko wartości tekstowych do wzorca przy użyciu symboli wieloznacznych. Jeśli wyrażenie wyszukiwania można dopasować do wyrażenia wzoru, operator GLOB zwróci wartość true, która wynosi 1. W przeciwieństwie do operatora LIKE, GLOB rozróżnia wielkość liter i stosuje składnię UNIX do określania następujących symboli wieloznacznych.
  • Znak gwiazdki (*)
  • Znak zapytania (?)
Znak gwiazdki (*) oznacza zero lub wiele cyfr lub znaków. Znak zapytania (?) Oznacza pojedynczą liczbę lub znak.
Składnia
Poniżej znajduje się podstawowa składnia * i ?.
SELECT FROM nazwa_tabeli
WHERE kolumna GLOB 'XXXX*'
lub
SELECT FROM nazwa_tabeli
WHERE kolumna GLOB '*XXXX*'
lub
SELECT FROM nazwa_tabeli
WHERE kolumna GLOB 'XXXX?'
lub
SELECT FROM nazwa_tabeli
WHERE kolumna GLOB '?XXXX'
lub
SELECT FROM nazwa_tabeli
WHERE kolumna GLOB '?XXXX?'
lub
SELECT FROM nazwa_tabeli
WHERE kolumna GLOB '????'
Można łączyć N wiele warunków korzystając z operatorów AND lub OR. W tym przypadku XXXX może być dowolną wartością numeryczną lub tekstową.
Przykład
Poniższa tabela zawiera listę przykładów, w których WHERE ma inną klauzulę LIKE z "*" i "?" operatorów.
L.p.
Wyrażenie i opis
1
WHERE PENSJA GLOB '200*'
Znajduje wszystkie wartości zaczynające się od 200
2
WHERE PENSJA GLOB '*200*'
Znajduje dowolne wartości, które mają 200 w dowolnej pozycji
3
WHERE PENSJA GLOB '?00*'
Znajduje wszystkie wartości, które mają 00 na drugiej i trzeciej pozycji
4
WHERE PENSJA GLOB '2??'
Znajduje wszystkie wartości zaczynające się od 2 i mające co najmniej 3 znaki
5
WHERE PENSJA GLOB '*2'
Znajduje wszystkie wartości, które kończą się na 2
6
WHERE PENSJA GLOB '?2*3'
Znajduje wszystkie wartości, które mają 2 na drugiej pozycji i kończy na 3
7
WHERE PENSJA GLOB '2???3'
Znajduje dowolne wartości w pięciocyfrowym numerze zaczynającym się od 2, a kończącym na 3
Weźmy prawdziwy przykład, rozważmy tabelę PRACOWNIK z następującymi rekordami -
id          nazwisko    wiek        adres       pensja
----------  ----------  ----------  ----------  ----------
2           Piotr       25          Piaseczno   1500.0
3           Tomasz      23          Grodzisk    2000.0
4           Marek       25          Płock       6500.0
5           Dawid       27          Halinów     8500.0
6           Katarzyna   22          Marki       4500.0
7           Jan         24          Kraków      4500.0
Poniżej znajduje się przykład, który wyświetli wszystkie rekordy z tabeli PRACOWNIK, gdzie WIEK zaczyna się od 2.
sqlite> SELECT * FROM PRACOWNIK WHERE WIEK  GLOB '2*';
Spowoduje to uzyskanie następującego wyniku.
id          nazwisko    wiek        adres       pensja
----------  ----------  ----------  ----------  ----------
2           Piotr       25          Piaseczno   1500.0
3           Tomasz      23          Grodzisk    2000.0
4           Marek       25          Płock       6500.0
5           Dawid       27          Halinów     8500.0
6           Katarzyna   22          Marki       4500.0
7           Jan         24          Kraków      4500.0
Poniżej znajduje się przykład, który wyświetli wszystkie rekordy z tabeli PRACOWNIK, gdzie ADRES będzie zawierał literę (o) w tekście -
sqlite> SELECT * FROM PRACOWNIK WHERE ADRES  GLOB '*o*';
Spowoduje to uzyskanie następującego wyniku.
id          nazwisko    wiek        adres       pensja
----------  ----------  ----------  ----------  ----------
2           Piotr       25          Piaseczno   1500.0
3           Tomasz      23          Grodzisk    2000.0
4           Marek       25          Płock       6500.0


Brak komentarzy:

Prześlij komentarz