Je voudrais éviter d'avoir de nombreuses vérifications comme les suivantes dans mon code:
myObj.someStringField = rdr.IsDBNull(someOrdinal)
? string.Empty
: rdr.GetString(someOrdinal);
J'ai pensé que je pourrais simplement demander à ma requête de prendre en charge les valeurs nulles en faisant quelque chose comme ceci:
SELECT myField1, [isnull](myField1, '')
FROM myTable1
WHERE myField1 = someCondition
J'utilise cependant SQLite et il ne semble pas reconnaître la isnull
fonction. 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 aucune.
Quelqu'un a-t-il des suggestions ou connaît-il 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, j'ai besoin d'utiliser certaines LEFT JOIN
clauses dans certains cas, où certains des champs retournés seront nuls car l'enregistrement correspondant dans la LEFT JOIN
table n'existera pas.
Essaye ça
par exemple
La
ifnull()
fonction renvoie une copie de son premier argument non NULL, ou NULL si les deux arguments sont NULL.Ifnull()
doit avoir exactement 2 arguments. Laifnull()
fonction équivaut àcoalesce()
avec deux arguments.la source
ifnull
je voulais ... J'avais juste besoin de supprimer les crochets que j'utilisais.S'il n'y a pas de
ISNULL()
méthode, vous pouvez utiliser cette expression à la place:Cela fonctionne de la même manière que
ISNULL(fieldname, 0)
.la source
ifnull
est l'équivalent SQLite de laisnull
fonction sur laquelle la question se posait. À tous ceux qui liront ceci maintenant, veuillez consulter la réponse de SQLMenace (de plus d'un an et demi plus tôt néanmoins) avant d'écrire votre propre solution en utilisantCASE
.CASE
instructions pourrait avoir plus de sens queIFNULL
.isnull
dans d'autres systèmes et je ne voudrais pas encourager les gens à "rouler le leur".Utilisation
IS NULL
ouIS NOT NULL
dans clause WHERE au lieu de la méthode ISNULL ():la source
myField1
a une valeur non nulle, il veut remplacer la valeur dans la colonne de résultat par une autre, si la valeur de ligne est nulle.Pour l'équivalent de NVL () et ISNULL (), utilisez:
IFNULL(column, altValue)
column
: La colonne que vous évaluez.altValue
: La valeur que vous souhaitez renvoyer si «colonne» est nulle.Exemple:
SELECT IFNULL(middle_name, 'N/A') FROM person;
* Remarque: la fonction COALESCE () fonctionne de la même manière que pour les autres bases de données.
Sources:
la source
Vous pouvez facilement définir une telle fonction et l'utiliser ensuite:
ou même version minifiée:
la source