SQL NULL funktion
- Forrige side SQL Nulls
- Næste side SQL datatyper
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
- Forrige side SQL Nulls
- Næste side SQL datatyper