SQLite
 sql >> Base de données >  >> RDS >> SQLite

Différence entre NullIf() et IfNull() dans SQLite

SQLite a une fonction appelée nullif() et une autre fonction appelée ifnull() , chacun ayant un objectif différent.

  • nullif() vous permet de traiter certaines valeurs comme NULL. Vous pouvez le considérer comme "retourner NULL si...".
  • ifnull() permet de remplacer les valeurs NULL par une autre valeur. Vous pouvez le considérer comme "si NULL, alors …".

Ils font donc essentiellement le contraire l'un de l'autre. L'un remplace les valeurs NULL par une autre valeur, et l'autre remplace une autre valeur par NULL.

Exemples

Dans certains cas, les deux fonctions peuvent renvoyer le même résultat. Par exemple :

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

Résultat :

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

Le nullif() La fonction renvoie une copie de son premier argument si les arguments sont différents et NULL si les arguments sont identiques. Dans ce cas, les arguments sont différents et il renvoie le premier argument.

Le ifnull() d'autre part, renvoie une copie du premier argument non NULL. Dans ce cas, les deux arguments n'étaient pas NULL et le premier argument a donc été renvoyé.

Avec l'exemple suivant, on commence à voir la différence entre ces deux fonctions :

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

Résultat :

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

Le nullif() La fonction renvoie NULL lorsque les deux arguments sont identiques. Dans ce cas, les deux arguments étaient les mêmes, et donc nullif() a fait son travail et a renvoyé NULL.

Le ifnull() La fonction renvoie le premier argument non NULL, et donc dans ce cas, elle a renvoyé le premier argument.

Le fait que les deux arguments soient identiques ne signifie rien pour ifnull() . Il renvoie simplement le premier argument non NULL. Cela dit, si les deux arguments sont NULL, il renvoie NULL.

Essayons d'ajouter des valeurs NULL.

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

Résultat :

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

Dans ce cas, nullif() a renvoyé NULL car NULL est le premier argument (rappelez-vous que nullif() renvoie son premier argument si les deux arguments sont différents).

ifnull() d'autre part a renvoyé son premier argument non NULL.

Voici à quoi cela ressemble si nous inversons les arguments.

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

Résultat :

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

Les deux arguments sont différents et donc nullif() renvoie le premier argument.

Le premier argument n'est pas NULL et donc ifnull() le renvoie.