96 votes

SQLite équivalent à la fonction ISNULL(), NVL(), IFNULL() ou FUSIONNER()

J'aimerais éviter d'avoir de nombreux contrôles comme suit dans mon code:

myObj.someStringField = rdr.IsDBNull(someOrdinal) 
                            ? string.Empty 
                            : rdr.GetString(someOrdinal);

J'ai pensé que je pourrais juste avoir ma requête prendre soin de les valeurs null en faisant quelque chose comme ceci:

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

J'utilise SQLite, bien qu'il ne semble pas reconnaître la fonction isnull. J'ai aussi essayé quelques équivalents à ceux constatés dans les autres bases de données (NVL(), IFNULL() et se rejoignent()), mais SQLite ne semble pas reconnaître l'un d'eux.

Quelqu'un aurait-il des suggestions ou connaissez un meilleur moyen pour ce faire. Malheureusement, la base de données n'ont pas de valeurs par défaut pour tous les champs. De Plus, j'ai besoin d'utiliser des clauses de JOINTURE dans certains cas, où certains des champs retournés sera nulle, car l'enregistrement correspondant dans la GAUCHE de la table de JOINTURE n'existent pas.

136voto

SQLMenace Points 68670

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

pas de parenthèses autour de la fonction

42voto

Hardik Darji Points 774

essayez ceci

ifnull(X,Y)

e.g select ifnull(InfoDetail,") InfoDetail; -- ce sera de remplacer null par " select ifnull(NULL,'C'EST NUL');-- Plus clairement....

Le ifnull() renvoie une copie de son premier non-argument NULL, ou NULL si les deux arguments sont NULL. Ifnull() doit avoir exactement 2 arguments. Le ifnull() la fonction est équivalente à fusionner() avec deux arguments.

27voto

Mahdi Mohajer Points 99

Si il n'y a pas d' isnull() méthode, puis vous pouvez utiliser cette expression à la place

case when fieldname is null then 0 else fieldname end

Cela fonctionne de la même comme isnull(fieldname, 0)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X