De flesta större DBMS ger oss en funktion för att ersätta nollvärden med ett annat värde.
Men namnet på funktionen tenderar att skilja sig åt mellan DBMS:er. Till exempel har SQL Server en ISNULL()
funktion, medan andra (som MySQL, MariaDB och SQLite) har en IFNULL()
funktion för att göra samma sak.
Men för att förvirra saken har MySQL och MariaDB var och en en ISNULL()
funktion som fungerar annorlunda än SQL Servers funktion med samma namn (MySQL och MariaDB:s implementering accepterar bara ett enda argument och returnerar 1
om den är null
och 0
om det inte är det).
Hur som helst, i fallet med Oracle Database kan vi använda NVL()
funktion för att ersätta nollvärden med ett annat värde.
Oracle Database har faktiskt också en NVL2()
funktion som tillåter oss att tillhandahålla ett annat värde att använda i händelse av att det första argumentet inte är null
.
Om vi bara vill testa om ett värde är null
eller inte kan vi använda IS NULL
villkoret (eller IS NOT NULL
för det motsatta testet).
NVL()
Funktion
Här är ett exempel som visar hur NVL()
funktionen fungerar:
SELECT NVL(null, 'Run')
FROM DUAL;
Resultat:
Run
I så fall var det första argumentet null
och så det andra argumentet returnerades.
Här är vad som händer när det första argumentet inte är null
:
SELECT NVL('Walk', 'Run')
FROM DUAL;
Resultat:
Walk
Det första argumentet returneras.
NVL2()
Funktion
Som nämnts ger Oracle Database oss också NVL2()
fungera. Denna funktion tillåter oss att tillhandahålla ett annat värde att använda i händelse av att det första argumentet inte är null
.
Här är ett exempel på hur det fungerar:
SELECT NVL2(null, 2, 3)
FROM DUAL;
Resultat:
3
Det första argumentet var null
och så det tredje argumentet returnerades.
Här är vad som händer när det första argumentet inte är null
:
SELECT NVL2(1, 2, 3)
FROM DUAL;
Resultat:
2
Det andra argumentet returneras.
ÄR NULL och ÄR INTE NULL
Villkor
ÄR INTE NULL
Villkor
Om vi bara vill ta reda på om ett värde är null
, kan vi använda IS NULL
jämförelsevillkor. Vi kan alternativt använda IS NOT NULL
för att kontrollera om det inte är null
.
Anta att vi har följande tabell:
SELECT * FROM Autoparts
WHERE Price IS NULL;
Resultat:
ID | OE# | PRIS | MODEL |
---|---|---|---|
2 | 62150B3278 | – | CAMRY |
1 | 62150A3278 | 168 | HILUX |
I det här fallet, PRICE
kolumnen innehåller ett nullvärde för den första raden, men inte för den andra raden.
Här är ett exempel på hur du använder IS NULL
mot den tabellen:
SELECT * FROM Autoparts
WHERE Price IS NULL;
Resultat:
ID | OE# | PRIS | MODEL |
---|---|---|---|
2 | 62150B3278 | – | CAMRY |
Endast raden med nollpriset returneras.
Här är vad som händer när vi använder IS NOT NULL
:
SELECT * FROM Autoparts
WHERE Price IS NOT NULL;
Resultat:
ID | OE# | PRIS | MODEL |
---|---|---|---|
1 | 62150A3278 | 168 | HILUX |
Den andra raden returneras.