Podczas pracy z relacyjnymi DBMS, w których daneprzechowywane w formie tabeli użytkownicy często mają za zadanie pobrać wartości, które (nie są uwzględnione) w określonym zakresie. Język SQL pozwala określić zestaw, który powinien (nie powinien) należeć do wartości przez różne opcje - operator In, operator Like, kombinacja mniej lub więcej warunków, a także instrukcja SQL Between. Opis i przykłady w tym artykule zostaną poświęcone ostatniej opcji.
Dosłownie operator między SQL jest tłumaczony w ten sposób -"pomiędzy". Jego użycie pozwala ustawić ograniczenie „Od i Do” do konkretnego pola, a jeśli kolejna wartość znajdzie się w zakresie, to predykat przyjmie wartość „Prawda”, a wartość zostanie uwzględniona w ostatecznym wyborze.
Składnia operatora jest niezwykle prosta:
Wybierz * Z tabeli t1 Gdzie t1.n między 0 a 7 |
Jak widać, po słowie kluczowym between należy podać wartość dolnej granicy zakresu, następnie AND i wartość górnej granicy.
Wymieńmy, z jakimi typami danych może współpracować operator SQL:
Ten między operatorem SQL ma pewne cechy szczególne. Poznajmy je:
Podczas pracy z tekstem wartość górnej granicy zakresu nie zostanie uwzględniona w zaznaczeniu, jeśli nie zostanie określona tak dokładnie, jak to możliwe. W kolejnych sekcjach omówimy tę funkcję bardziej szczegółowo.
Przygotujmy tabelę z danymi o menedżerach pracujących w organizacji. Tabela będzie miała następującą strukturę:
Nazwa pola | Typ danych | Opis |
Kod | Licznik | Unikalny identyfikator pracownika |
Nazwisko | Tekst | Nazwisko pracownika |
Imię | Tekst | Imię i nazwisko pracownika |
drugie imię | Tekst | Patronimika pracownika |
Płeć | Tekst | Płeć pracownika (M/K) |
Data paragonu | Data Czas | Data zatrudnienia pracownika |
Liczba_dzieci | Liczbowy | Liczba dzieci pracownika |
Wypełnijmy tabelę następującymi danymi:
Kod | Nazwisko | Imię | drugie imię | Płeć | Data paragonu | Liczba_dzieci |
1 | Aleksandrowa | Irina | Nikołajewna | fa | 01.05.2014 | 1 |
2 | Borowoj | Andrey | Stiepanowicz | M. | 21.09.2013 | 0 |
3 | Winogradów | Siergiej | Pawłowiczu | M. | 15.06.1998 | 1 |
4 | Szumilina | Aleksandra | Borysowiczu | M. | 25.12.2004 | 2 |
5 | Wiszniakow | Leonid | Aleksandrowicz | M. | 09.10.2007 | 0 |
6 | Tropnikow | Bazylia | Siergiejewicza | M. | 12.01.2016 | 3 |
7 | Perły | Nikita | Wasilewicz | M. | 11.01.2017 | 1 |
8 | Awdejewa | Nika | Konstantinowna | fa | 31.03.2001 | 2 |
9 | Jakowlew | Leonid | Nikołajewicz | M. | 16.02.2009 | 0 |
Utwórzmy zapytanie sql, które pomoże nam wybrać wszystkich pracowników z 2 lub 3 dziećmi:
WYBIERZ menedżerów. * OD Menedżerów GDZIE Menedżerowie.Dzieci w wieku od 2 do 3 lat |
Rezultatem będą trzy wiersze z danymi o pracownikach o imionach Shumilin, Tropnikov i Avdeeva.
Teraz wybierzemy pracowników zatrudnionych 1 stycznia2005 do 31 grudnia 2016. Należy zauważyć, że różne DBMS pozwalają na zapisywanie dat w warunkach na różne sposoby. W większości przypadków data musi być po prostu przekonwertowana na dzień-miesiąc-rok (lub cokolwiek, co jest wygodniejsze) i zapisana w pojedynczych lub podwójnych cudzysłowach. W MS Access data jest zawarta w znaku „#”. Przeprowadźmy na tej podstawie przykład:
WYBIERZ Menedżerów.*, Menedżerowie.Data_przyjęcia OD Menedżerów GDZIE Menedżerowie. Odbiór_Data Między 1. 1.2005 # i # 31.12.2016 # |
Rezultatem będzie pięciu pracowników zatrudnionych w określonym okresie włącznie.
Następnie zobaczmy, jak SQL działa z ciągami.
Bardzo częste zadanie, które musisz rozwiązaćpodczas pracy z nazwiskami pracowników konieczne jest wybranie tylko tych, których imiona zaczynają się od określonej litery. Spróbujmy, a my spełnimy prośbę i wybierzemy pracowników, których nazwiska zaczynają się od nazwisk od A do B:
WYBIERZ menedżerów. * OD Menedżerów GDZIE Menedżerowie Nazwisko pomiędzy "A" i "B" ZAMÓW PRZEZ 2 |
Wynik jest następujący:
Kod | Nazwisko | Imię | drugie imię | Płeć | Data paragonu | Liczba_dzieci |
8 | Awdejewa | Nika | Konstantinowna | fa | 31.03.2001 | 2 |
1 | Aleksandrowa | Irina | Nikołajewna | fa | 01.05.2014 | 1 |
2 | Borowoj | Andrey | Stiepanowicz | M. | 21.09.2013 | 0 |
Jak widać, dwóch pracowników z nazwiskiem nalitera B nie została uwzględniona w wykazie. Jaki jest tego powód? Chodzi o to, jak dokładnie operator porównuje ciągi o nierównej długości. Linia „B” jest krótsza niż linia „Vinogradov” i jest wypełniona spacjami. Ale przy sortowaniu alfabetycznym spacje będą wiodącymi znakami, a nazwisko nie zostanie uwzględnione w zaznaczeniu. Różne DBMS oferują różne rozwiązania tego problemu, ale często najłatwiej jest określić następującą literę alfabetu w zakresie niezawodności:
WYBIERZ menedżerów. * OD Menedżerów GDZIE Menedżerowie Nazwisko pomiędzy "A" i "D" ZAMÓW PRZEZ 2 |
Podczas wykonywania tego zapytania wynik całkowicie nas zadowoli.
Taki niuans istnieje tylko podczas pracy z danymi symbolicznymi, ale pokazuje, że pracując nawet z tak prostymi operatorami jak pomiędzy, trzeba być ostrożnym.