W tabeli artykuly (kolumna cena) chcemy wybrać artykuły, których cena NIE mieści się w przedziale od 1000 do 1500 zł. Którego warunku WHERE należy użyć?
Dobrze.
NOT BETWEEN wybiera wartości spoza przedziału (poniżej 1000 lub powyżej 1500).Źle.
NOT IN wyklucza tylko wartości 1000 i 1500, nie cały przedział.Źle. To wybierze artykuły W przedziale, a my chcemy POZA nim.
Źle. Żadna liczba nie jest jednocześnie < 1000 i > 1500 - warunek nigdy niespełniony.
Aby wybrać wartości spoza zakresu, używa się
NOT BETWEEN dolna AND górna. Warunek cena NOT BETWEEN 1000 AND 1500 zwróci artykuły tańsze niż 1000 lub droższe niż 1500 zł. To zwięzły odpowiednik cena < 1000 OR cena > 1500. Dlatego poprawny jest NOT BETWEEN.Pozostałe warunki nie zwrócą wartości spoza przedziału.
BETWEEN 1000 AND 1500 robi dokładnie odwrotność - wybiera ceny W zakresie. Zapis cena < 1000 AND cena > 1500 jest sprzeczny: użyto AND, a żadna liczba nie jest naraz mniejsza od 1000 i większa od 1500 (poprawny byłby OR). NOT IN (1000, 1500) wyklucza jedynie dwie konkretne wartości, a nie cały przedział pomiędzy nimi. Wartości spoza zakresu daje NOT BETWEEN 1000 AND 1500, dlatego to ono jest poprawne.