SQLite équivalent à ISNULL (), NVL (), IFNULL () ou COALESCE ()

Je voudrais éviter d’avoir beaucoup de vérifications comme celles-ci dans mon code:

myObj.someSsortingngField = rdr.IsDBNull(someOrdinal) ? ssortingng.Empty : rdr.GetSsortingng(someOrdinal); 

Je pensais que je pouvais juste faire en sorte que ma requête prenne en compte les valeurs NULL en faisant quelque chose comme ceci:

 SELECT myField1, [isnull](myField1, '') FROM myTable1 WHERE myField1 = someCondition 

J’utilise SQLite cependant et il ne semble pas reconnaître la fonction isnull . J’ai également essayé des équivalents reconnus dans d’autres bases de données ( NVL() , IFNULL() et COALESCE() ), mais SQLite ne semble en reconnaître aucun.

Quelqu’un at-il des suggestions ou une meilleure façon de le faire. Malheureusement, la firebase database n’a pas de valeurs par défaut pour tous les champs. De plus, dans certains cas, je dois utiliser des clauses LEFT JOIN dans lesquelles certains des champs renvoyés seront nuls car l’enregistrement correspondant dans la table LEFT JOIN n’existera pas.

IFNULL , voir ici: http://www.sqlite.org/lang_corefunc.html#ifnull

pas de parenthèses autour de la fonction

Essaye ça

 ifnull(X,Y) 

par exemple

 select ifnull(InfoDetail,'') InfoDetail; -- this will replace null with '' select ifnull(NULL,'THIS IS NULL');-- More clearly.... 

La fonction ifnull() renvoie une copie de son premier argument non NULL ou NULL si les deux arguments sont NULL. Ifnull() doit avoir exactement 2 arguments. La fonction ifnull() équivaut à coalesce() avec deux arguments.

S’il n’y a pas de méthode ISNULL() , vous pouvez utiliser cette expression à la place:

 CASE WHEN fieldname IS NULL THEN 0 ELSE fieldname END 

Cela fonctionne comme ISNULL(fieldname, 0) nom de ISNULL(fieldname, 0) .

Utilisez IS NULL ou IS NOT NULL dans la clause WHERE au lieu de la méthode ISNULL ():

 SELECT myField1 FROM myTable1 WHERE myField1 IS NOT NULL 

Vous pouvez facilement définir une telle fonction et l’utiliser ensuite:

 ifnull < - function(x,y) { if(is.na(x)==TRUE) return (y) else return (x); } 

ou même version minifiée:

 ifnull < - function(x,y) {if(is.na(x)==TRUE) return (y) else return (x);}