SQL - IN & BETWEEN Operatori


Rad sa dometima i uslovima za članstvo

U prethodnoj lekciji naučili smo kako kombinovati više uvslova pomoću operatora AND i OR operatora. Međutim, ponekad to nije dovoljno i vrlo produktivno, na primjer, ako morate provjeriti vrijednosti koje leže unutar raspona ili niza vrijednosti. I ovdje se IN i BETWEEN operateri pojavljuju u slici koja vam omogućava definiranje ekskluzivnog raspona ili skupa vrijednosti, a ne kombinovanje zasebnih uslova.



IN Operator

Operator IN je logički operator koji se koristi za provjeru postoji li određena vrijednost unutar niza vrijednosti ili ne. Njegova osnovna sintaksa može se napisati kao u primjeru:

SELECT column_list FROM table_name
WHERE column_name IN (value1, value1,...);

Ovdje su column_list imena kolona / polja poput imena, starosti, zemlje itd. Tabela baze podataka čije vrijednosti želite dohvatiti. Pa, pogledajmo nekoliko primjera. Uzmite u obzir da u našoj bazi podataka imamo tabelu zaposlenih koja sadrži sljedeće zapise:



Sljedeća SQL izjava vratit će samo one zaposlene čiji je dept_id ili 1 ili 3.

SELECT * FROM employees
WHERE dept_id IN (1, 3);

Nakon izvršenja upita, dobit ćete rezultat postavljen ovako:



Slično tome, možete koristiti NOT IN operator, što je upravo suprotno od IN-a. Sljedeća SQL izjava vratit će sve zaposlene osim onih čiji dept_id nije 1 ili 3.

SELECT * FROM employees
WHERE dept_id NOT IN (1, 3);

Nakon izvršenja upita, ovaj put dobit ćete rezultat postavljen ovako:





BETWWEN Operator

Ponekad želite odabrati red ako vrijednost u koloni padne unutar određenog raspona. Ova vrsta stanja je uobičajena pri radu s numeričkim podacima. Da biste izvršili upit na osnovu takvog stanja, možete koristiti BETWEEN operatera. To je logičan operator koji vam omogućava da odredite raspon za testiranje na sljedeći način:

SELECT column1_name, column2_name, columnN_name
FROM table_name
WHERE column_name BETWEEN min_value AND max_value;

Napravimo i izvršimo upite na osnovu raspona uslova na tabeli naših zaposlenih.



Definisanje numeričkog dometa

Sljedeća SQL izjava vraćaju samo one zaposlene iz tabele zaposlenih, čija plata spada u raspon 7000 i 9000.

SELECT * FROM employees 
WHERE salary BETWEEN 7000 AND 9000;

Nakon izvršenja, dobit ćete ovakav izlaz:




Definiranje raspona datuma

Kada koristite BETWEEN operator s vrijednostima datuma ili vremena, pomoću funkcije CAST() izričito pretvorite vrijednosti u željeni tip podataka za najbolje rezultate. Na primjer, ako koristite niz poput "2016-12-31" u poređenju s DATE, bacite niz na DATE. Sljedeća SQL izjava bira sve zaposlene koji su se zaposlili između 1. januara 2006. (tj. '2006-01-01') i 31. decembra 2016. (tj. '2016-12-31'):

SELECT * FROM employees WHERE hire_date
BETWEEN CAST('2006-01-01' AS DATE) AND CAST('2016-12-31' AS DATE);

Nakon izvršenja upita, dobit ćete rezultat postavljen ovako:




Definisanje dometa stringova

Iako su rasponi datuma i brojeva najčešći, možete uspostaviti i uslove koji pretražuju raspon stringova. Sljedeća SQL izjava bira sve zaposlene čije ime počinje slovom između 'O' i 'Z':

SELECT * FROM employees
WHERE emp_name BETWEEN 'O' AND 'Z';

Nakon izvršenja, dobit ćete ovakav izlaz: