SQL NULL-funktion
- Föregående sida SQL Nulls
- Nästa sida SQL Datatyper
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
- Föregående sida SQL Nulls
- Nästa sida SQL Datatyper