Ich möchte vermeiden, dass mein Code viele Überprüfungen wie die folgenden enthält:
myObj.someStringField = rdr.IsDBNull(someOrdinal)
? string.Empty
: rdr.GetString(someOrdinal);
Ich dachte, ich könnte meine Abfrage einfach dazu bringen, sich um die Nullen zu kümmern, indem ich so etwas mache:
SELECT myField1, [isnull](myField1, '')
FROM myTable1
WHERE myField1 = someCondition
Ich verwende jedoch SQLite und es scheint die isnull
Funktion nicht zu erkennen . Ich habe auch einige gleichwertige ausprobiert, die in anderen Datenbanken erkannt wurden ( NVL()
,IFNULL()
und COALESCE()
), aber SQLite scheint nicht von ihnen zu erkennen.
Hat jemand irgendwelche Vorschläge oder kennt einen besseren Weg, dies zu tun. Leider hat die Datenbank nicht für alle Felder Standardwerte. Außerdem muss ich LEFT JOIN
in einigen Fällen einige Klauseln verwenden, in denen einige der zurückgegebenen Felder null sind, da der übereinstimmende Datensatz in der LEFT JOIN
Tabelle nicht vorhanden ist.
Versuche dies
z.B
Die
ifnull()
Funktion gibt eine Kopie ihres ersten Nicht-NULL-Arguments zurück oder NULL, wenn beide Argumente NULL sind.Ifnull()
muss genau 2 Argumente haben. Dieifnull()
Funktion entsprichtcoalesce()
zwei Argumenten.quelle
ifnull
ich es wollte ... Ich musste nur die eckigen Klammern fallen lassen, die ich benutzte.Wenn es keine
ISNULL()
Methode gibt, können Sie stattdessen diesen Ausdruck verwenden:Dies funktioniert genauso wie
ISNULL(fieldname, 0)
.quelle
ifnull
ist das SQLite-Äquivalent derisnull
Funktion, nach der die Frage gestellt wurde. Wenn Sie dies jetzt lesen, lesen Sie bitte die Antwort von SQLMenace (von über anderthalb Jahren zuvor), bevor Sie Ihre eigene Lösung mit schreibenCASE
.CASE
Anweisungen möglicherweise sinnvoller alsIFNULL
.isnull
anderen Systemen und ich möchte die Leute nicht dazu ermutigen, "ihre eigenen zu rollen".Verwenden Sie
IS NULL
oderIS NOT NULL
in der WHERE-Klausel anstelle der ISNULL () -Methode:quelle
myField1
die einen Wert ungleich Null haben. Er möchte den Wert in der Ergebnisspalte durch einen anderen ersetzen, wenn der Zeilenwert Null ist.Verwenden Sie für das Äquivalent von NVL () und ISNULL ():
IFNULL(column, altValue)
column
: Die Spalte, die Sie auswerten.altValue
: Der Wert, den Sie zurückgeben möchten, wenn 'column' null ist.Beispiel:
SELECT IFNULL(middle_name, 'N/A') FROM person;
* Hinweis: Die Funktion COALESCE () funktioniert genauso wie für andere Datenbanken.
Quellen:
quelle
Sie können eine solche Funktion einfach definieren und dann verwenden:
oder dieselbe minimierte Version:
quelle