Frage

Ich möchte vermeiden, dass viele Schecks in meinem Code Folgendes wie Folgendes haben:

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

Ich dachte, ich könnte nur meine Anfrage um die Nulls kümmern, indem ich so etwas mache:

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

Ich benutze SQLite allerdings und es scheint das nicht zu erkennen isnull Funktion. Ich habe auch einige äquivalente, die in anderen Datenbanken erkannt werden (NVL(), IFNULL() und COALESCE()), aber SQLite scheint keinen von ihnen zu erkennen.

Hat jemand Vorschläge oder kennt einen besseren Weg, dies zu tun? Leider hat die Datenbank keine Standardwerte für alle Felder. Außerdem muss ich einige verwenden LEFT JOIN Klauseln in einigen Fällen, in denen einige der zurückgegebenen Felder zurückgegeben werden LEFT JOIN Tabelle wird nicht existieren.

War es hilfreich?

Lösung

IFNULL, siehe hier: http://www.sqlite.org/lang_corefunc.html#ifnull

Keine Klammern um die Funktion

Andere Tipps

Versuche dies

ifnull(X,Y)  

z.B

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

Das ifnull() Die Funktion gibt eine Kopie ihres ersten Nicht-Null-Arguments zurück oder null, wenn beide Argumente null sind. Ifnull() Muss genau 2 Argumente haben. Das ifnull() Funktion entspricht zu coalesce() mit zwei Argumenten.

Wenn es nicht gibt ISNULL() Methode können Sie diesen Ausdruck stattdessen verwenden:

CASE WHEN fieldname IS NULL THEN 0 ELSE fieldname END

Dies funktioniert genauso wie ISNULL(fieldname, 0).

Verwenden IS NULL oder IS NOT NULL In where-Klausel anstelle von isnull () Methode:

SELECT myField1
FROM myTable1
WHERE myField1 IS NOT NULL

Für das Äquivalent von nvl () und isnull () Verwendung:

IFNULL(column, altValue)

column : Die Spalte, die Sie bewerten.

altValue : Der Wert, den Sie zurückgeben möchten, wenn 'Spalte' null ist.

Beispiel:

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

*Hinweis: Die Funktion coalesce () funktioniert genauso wie für andere Datenbanken.

Quellen:

Sie können diese Funktion leicht definieren und dann verwenden:

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

oder gleiche abgebildete Version:

ifnull <- function(x,y) {if(is.na(x)==TRUE) return (y) else return (x);}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top