SQL – Komparacioni operatori i vrednost NULL

Kao što im i samo ime kaže, komparacioni operatori upoređuju izraze i kao rezultat vraćaju jednu od tri vrednosti: TRUE, FALSE i Unknown. Za TRUE i FALSE nisu potrebna objašnjenja, ali šta predstavlja „Unknown“? Ova vrednost je vezana za „NULL“ vrednost u slogu baze podataka. NULL vrednost govori da u datom polju određenog sloga nema nikakvog podatka (ni nule (0) i praznog prostora-blank). Na primer, ako imamo komparaciju „Polje_u_bazi = 9“, a dato polje sadrži vrednost NULL (tj. ne poseduje nikakvu vrednost), kao rezultat vratiće se „Unknown“. Pošto je ovakva deklaracija često zbunjujuća, mnogi sistemi za upravljanje bazama podataka pretvaraju „Unknown“ u FALSE, i na taj način omogućavaju korišćenje specijalog operatora „IS NULL“ kao test za prazna polja u bazi.

Kao primer, uzećemo tabelu „Artikli“, u kojoj su izlistani određeni proizvodi i njihove cene. Da bi dobili potpunu informaciju o celoj tabeli sa svim poljima, upotrebićemo upit:


SELECT *
FROM Artikli;

I kao rezultat, dobićemo tabelu kao na slici. Zapazite da nema nikakvog podatka u polju „Cena“ za artikl „Luk“. U stvari vrednost ovog polja za artikl „Luk“ je „NULL“. U ovom slučaju vrednost NULL je bolje uočljiva (pošto se radi o numeričkom polju), nego da je vrednost NULL upotrebljena u polju „Artikl“. U polju „Artikl“, praznina bi mogla da predstavlja vrednost NULL ili prazan znak (blank). Sada ćemo pokušati da pronađemo vrednosti NULL:


SELECT *
FROM Artikli
WHERE Cena IS NULL;

Kao rezultat dobićemo tabelu kao na slici (srednji deo). Videćete da se kao izlaz pojavio samo jedan slog (Luk).

Šta će se desiti kao umesto „IS NULL“ upotrebimo operator jednako (=)?


SELECT *
FROM Artikli
WHERE Cena = NULL;

Kao rezultat nećemo dobiti nijedan slog, jer je komparacija „Cena=NULL“ vratila vrednost „FALSE“ – rezultat je nepoznat. Znači, kad god vam je potrebno da pronađete prazne slogove, koristite operator „IS NULL“.

Pratite Krstaricu i preko mobilne aplikacije za Android i iPhone.