SQL NULL funktion

SQL ISNULL(), NVL(), IFNULL() og COALESCE() funktioner

Se nedenstående "Products"-tabel:

P_Id ProductName UnitPrice UnitsInStock UnitsOnOrder
1 computer 699 25 15
2 printer 365 36  
3 telefon 280 159 57

Hvis "UnitsOnOrder" er valgfri og kan indeholde NULL-værdier.

Vi bruger følgende SELECT-sætning:

SELECT ProductName, UnitPrice * (UnitsInStock + UnitsOnOrder)
FROM Products

I de ovenstående eksempler vil resultatet være NULL, hvis værdien af "UnitsOnOrder" er NULL.

Microsofts ISNULL() funktion bruges til at specificere, hvordan NULL-værdier skal håndteres.

NVL(), IFNULL() og COALESCE() funktioner kan også opnå samme resultat.

Her håber vi, at NULL-værdien er 0.

Herunder, hvis "UnitsOnOrder" er NULL, er det ikke godt for beregningen, så hvis værdien er NULL, returnerer ISNULL() 0.

SQL Server / MS Access

SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0))
FROM Products

Oracle

Oracle har ingen ISNULL() funktion. Men vi kan bruge NVL() funktionen for at opnå samme resultat:

SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder, 0))
FROM Products

MySQL

MySQL har også lignende ISNULL() funktioner. Dog adlyder de sig lidt forskelligt fra Microsofts ISNULL() funktion.

I MySQL kan vi bruge IFNULL() funktionen, sådan her:

SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0))
FROM Products

Eller vi kan bruge COALESCE() funktionen, sådan her:

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products