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 na www.krstarica.com