sql >> Databáze >  >> RDS >> SQLite

Rozdíl mezi NullIf() a IfNull() v SQLite

SQLite má funkci nazvanou nullif() a další funkce nazvaná ifnull() , z nichž každý slouží jinému účelu.

  • nullif() umožňuje považovat určité hodnoty za NULL. Můžete si to představit jako „vrácení NULL, pokud…“.
  • ifnull() umožňuje nahradit hodnoty NULL jinou hodnotou. Můžete si to představit jako „pokud NULL, pak…“.

Takže v podstatě dělají jeden druhému opak. Jeden nahrazuje hodnoty NULL jinou hodnotou a druhý nahrazuje jinou hodnotu hodnotou NULL.

Příklady

V některých případech mohou obě funkce vrátit stejný výsledek. Například:

SELECT
  nullif(1, 2),
  ifnull(1, 2);

Výsledek:

nullif(1, 2)  ifnull(1, 2)
------------  ------------
1             1           

nullif() funkce vrátí kopii svého prvního argumentu, pokud jsou argumenty různé, a NULL, pokud jsou argumenty stejné. V tomto případě jsou argumenty různé a vrací první argument.

ifnull() funkce na druhé straně vrátí kopii prvního argumentu, který není NULL. V tomto případě oba argumenty neměly hodnotu NULL, a tak byl vrácen první argument.

S následujícím příkladem začneme vidět rozdíl mezi těmito dvěma funkcemi:

SELECT
  nullif(1, 1),
  ifnull(1, 1);

Výsledek:

nullif(1, 1)  ifnull(1, 1)
------------  ------------
              1           

nullif() funkce vrátí NULL, když byly oba argumenty stejné. V tomto případě byly oba argumenty stejné, a proto nullif() provedl svou práci a vrátil hodnotu NULL.

ifnull() funkce vrací první argument, který není NULL, a tak v tomto případě vrátila první argument.

Skutečnost, že oba argumenty jsou stejné, pro ifnull() nic neznamená . Jednoduše vrátí první argument, který není NULL. Pokud jsou oba argumenty NULL, vrátí NULL.

Zkusme přidat nějaké hodnoty NULL.

SELECT
  nullif(NULL, 1),
  ifnull(NULL, 1);

Výsledek:

nullif(NULL, 1)  ifnull(NULL, 1)
---------------  ---------------
                 1              

V tomto případě nullif() vrátil NULL, protože NULL je první argument (připomeňme, že nullif() vrátí svůj první argument, pokud se oba argumenty liší).

ifnull() na druhé straně vrátil svůj první argument, který není NULL.

Takto to vypadá, když argumenty vyměníme.

SELECT
  nullif(1, NULL),
  ifnull(1, NULL);

Výsledek:

nullif(1, NULL)  ifnull(1, NULL)
---------------  ---------------
1                1              

Oba argumenty jsou různé, a proto nullif() vrátí první argument.

První argument není NULL, a proto ifnull() vrátí to.


  1. Jak resetovat kořenové heslo MySQL nebo MariaDB v Linuxu

  2. Jak vrátit počet sekund po půlnoci v databázi Oracle

  3. Jak zobrazit datum v jiném formátu v oracle

  4. Průvodce po MariaDB Columnstore pro správce MySQL