sql >> Database >  >> RDS >> SQLite

Verschil tussen NullIf() en IfNull() in SQLite

SQLite heeft een functie genaamd nullif() en een andere functie genaamd ifnull() , die elk een ander doel dienen.

  • nullif() stelt u in staat om bepaalde waarden als NULL te behandelen. Je kunt het zien als "return NULL als ...".
  • ifnull() stelt u in staat om NULL-waarden te vervangen door een andere waarde. Je kunt het zien als "als NULL, dan ...".

Ze doen dus eigenlijk het tegenovergestelde van elkaar. De ene vervangt NULL-waarden door een andere waarde en de andere vervangt een andere waarde door NULL.

Voorbeelden

In sommige gevallen kunnen beide functies hetzelfde resultaat opleveren. Bijvoorbeeld:

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

Resultaat:

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

De nullif() functie retourneert een kopie van zijn eerste argument als de argumenten verschillend zijn en NULL als de argumenten hetzelfde zijn. In dit geval zijn de argumenten verschillend en wordt het eerste argument geretourneerd.

De ifnull() functie aan de andere kant, retourneert een kopie van het eerste niet-NULL-argument. In dit geval waren beide argumenten niet-NULL en dus werd het eerste argument geretourneerd.

Met het volgende voorbeeld beginnen we het verschil tussen deze twee functies te zien:

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

Resultaat:

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

De nullif() functie retourneert NULL wanneer beide argumenten hetzelfde waren. In dit geval waren beide argumenten hetzelfde, en dus nullif() deed zijn werk en gaf NULL terug.

De ifnull() functie retourneert het eerste niet-NULL-argument, en dus in dit geval het eerste argument.

Het feit dat beide argumenten hetzelfde zijn, betekent niets voor ifnull() . Het retourneert eenvoudig het eerste niet-NULL-argument. Dat gezegd hebbende, als beide argumenten NULL zijn, wordt NULL geretourneerd.

Laten we proberen wat NULL's toe te voegen.

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

Resultaat:

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

In dit geval nullif() NULL geretourneerd omdat NULL het eerste argument is (herinner je dat nullif() geeft zijn eerste argument terug als beide argumenten verschillend zijn).

ifnull() aan de andere kant gaf het zijn eerste niet-NULL-argument terug.

Zo ziet het eruit als we de argumenten omdraaien.

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

Resultaat:

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

Beide argumenten zijn verschillend en dus nullif() geeft het eerste argument terug.

Het eerste argument is niet NULL en dus ifnull() geeft het terug.


  1. Een inleiding tot SQL-indexen

  2. Oracle-datum tussen zoekopdracht

  3. SQL Server DELETE – Een of meer rijen uit een tabel verwijderen met enigszins geavanceerde scenario's

  4. Wat is het equivalent van bigint in C#?