Question

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

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

Je pensais que je pouvais avoir ma requête prendre soin des nulls en faisant quelque chose comme ceci:

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

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

Quelqu'un at-il des suggestions ou si vous connaissez une meilleure façon de le faire. Malheureusement, la base de données n'a pas de valeurs par défaut pour tous les champs. De plus, je dois utiliser certaines clauses de LEFT JOIN dans certains cas, où quelques-uns des champs retournés seront nuls parce que le dossier correspondant dans le tableau de LEFT JOIN n'existera pas.

Était-ce utile?

La solution

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

pas de crochets entourant la fonction

Autres conseils

Essayer cette

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() retourne une copie de son premier argument non NULL, NULL ou si les deux arguments sont NULL. Ifnull() doit avoir exactement deux arguments. La fonction ifnull() est équivalente à coalesce() avec deux arguments.

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

CASE WHEN fieldname IS NULL THEN 0 ELSE fieldname END

Cela fonctionne de la même que ISNULL(fieldname, 0).

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

SELECT myField1
FROM myTable1
WHERE myField1 IS NOT NULL

Pour l'équivalent de NVL () et ISNULL () utiliser:

IFNULL(column, altValue)

column. La colonne que vous évaluez

altValue. La valeur que vous souhaitez revenir si « colonne » est nulle

Exemple:

SELECT IFNULL(middle_name, 'N/A') FROM person;

* Remarque: La fonction COALESCE () fonctionne comme il le fait pour d'autres bases de données.

Sources:

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

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

ou même version minified:

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