SQL NULL-funktion

SQL-funktionerna ISNULL(), NVL(), IFNULL() och COALESCE()

Se följande "Products"-tabell:

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

Om "UnitsOnOrder" är valfritt och kan innehålla NULL-värden.

Vi använder följande SELECT-sats:

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

I de ovanstående exemplen är resultatet NULL om värdet för "UnitsOnOrder" är NULL.

Microsofts ISNULL() -funktion används för att specificera hur NULL-värden ska hanteras.

NVL(), IFNULL() och COALESCE() -funktionerna kan också uppnå samma resultat.

Här vill vi att NULL-värdet ska vara 0.

När "UnitsOnOrder" är NULL, är det inte fördelaktigt för beräkningen, så om värdet är NULL returnerar ISNULL() 0.

SQL Server / MS Access

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

Oracle

Oracle har ingen ISNULL() -funktion. Men vi kan använda NVL() -funktionen för att uppnå samma resultat:

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

MySQL

MySQL har också en funktion som liknar ISNULL(). Men dess arbetsmetod är något annorlunda än Microsofts ISNULL() -funktion.

I MySQL kan vi använda IFNULL() -funktionen, så här:

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

Eller vi kan använda COALESCE() -funktionen, så här:

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