sql >> Databasteknik >  >> RDS >> SQLite

Skillnaden mellan NullIf() och IfNull() i SQLite

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.


  1. Hur man infogar en sträng i en annan sträng i MySQL med INSERT()

  2. ORA-06508:PL/SQL:kunde inte hitta den programenhet som anropas

  3. Hur statement_timestamp() fungerar i PostgreSQL

  4. Hämtar datum i sql-servern, CURRENT_TIMESTAMP vs GetDate()