SQLite har en funktion som heter nullif() och en annan funktion som heter ifnull() , som var och en har olika syften.
nullif()låter dig behandla vissa värden som NULL. Du kan se det som "return NULL if ...".ifnull()låter dig ersätta NULL-värden med ett annat värde. Du kan tänka på det som "om NULL, då ...".
Så de gör i princip motsatsen till varandra. En ersätter NULL-värden med ett annat värde, och den andra ersätter ett annat värde med NULL.
Exempel
I vissa fall kan båda funktionerna returnera samma resultat. Till exempel:
SELECT
nullif(1, 2),
ifnull(1, 2); Resultat:
nullif(1, 2) ifnull(1, 2) ------------ ------------ 1 1
nullif() funktion returnerar en kopia av sitt första argument om argumenten är olika och NULL om argumenten är desamma. I det här fallet är argumenten olika och det returnerar det första argumentet.
ifnull() funktion å andra sidan, returnerar en kopia av det första icke-NULL-argumentet. I det här fallet var båda argumenten icke-NULL och därför returnerades det första argumentet.
Med följande exempel börjar vi se skillnaden mellan dessa två funktioner:
SELECT
nullif(1, 1),
ifnull(1, 1); Resultat:
nullif(1, 1) ifnull(1, 1) ------------ ------------ 1
nullif() funktion returnerar NULL när båda argumenten var samma. I det här fallet var båda argumenten desamma, och så nullif() gjorde sitt jobb och returnerade NULL.
ifnull() funktion returnerar det första icke-NULL-argumentet, och i det här fallet returnerade den det första argumentet.
Det faktum att båda argumenten är samma betyder ingenting för ifnull() . Det returnerar helt enkelt det första icke-NULL-argumentet. Med det sagt, om båda argumenten är NULL så returnerar det NULL.
Låt oss försöka lägga till några NULL.
SELECT
nullif(NULL, 1),
ifnull(NULL, 1); Resultat:
nullif(NULL, 1) ifnull(NULL, 1) --------------- --------------- 1
I det här fallet, nullif() returnerade NULL eftersom NULL är det första argumentet (kom ihåg att nullif() returnerar sitt första argument om båda argumenten är olika).
ifnull() å andra sidan returnerade sitt första icke-NULL-argument.
Så här ser det ut om vi byter argument.
SELECT
nullif(1, NULL),
ifnull(1, NULL); Resultat:
nullif(1, NULL) ifnull(1, NULL) --------------- --------------- 1 1
Båda argumenten är olika och så nullif() returnerar det första argumentet.
Det första argumentet är inte NULL och så ifnull() returnerar den.