Domanda

Mi piacerebbe evitare di avere molti controlli come il seguente nel mio codice:

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

Ho pensato ho potuto solo avere la mia domanda prendersi cura dei valori nulli facendo qualcosa di simile a questo:

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

Sto usando SQLite e anche se non sembra riconoscere la funzione di isnull. Ho anche provato alcuni tra quelli equivalenti riconosciute in altre banche dati (NVL(), IFNULL() e COALESCE()), ma SQLite non sembra riconoscere nessuno di loro.

Qualcuno ha qualche suggerimento o sa di un modo migliore per farlo. Purtroppo il database non ha valori di default per tutti i campi. Inoltre, ho bisogno di usare alcune clausole LEFT JOIN in alcuni casi, in cui alcuni dei campi restituiti saranno nulli perché il record corrispondente nella tabella LEFT JOIN non esisterà.

È stato utile?

Soluzione

IFNULL , vedere qui: http: //www.sqlite. org / lang_corefunc.html # IFNULL

Non ci sono parentesi intorno alla funzione

Altri suggerimenti

Prova questo

ifnull(X,Y)  

es

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

La funzione ifnull() restituisce una copia del suo primo argomento non NULL, o NULL se entrambi gli argomenti sono NULL. Ifnull() deve avere esattamente 2 argomenti. La funzione ifnull() è equivalente a coalesce() con due argomenti.

Se non c'è il metodo ISNULL(), è possibile utilizzare questa espressione, invece:

CASE WHEN fieldname IS NULL THEN 0 ELSE fieldname END

Questo funziona allo stesso modo ISNULL(fieldname, 0).

Utilizzare IS NULL o IS NOT NULL in WHERE clausola invece di ISNULL () Metodo:

SELECT myField1
FROM myTable1
WHERE myField1 IS NOT NULL

Per l'equivalente di NVL () e ISNULL () utilizzare:

IFNULL(column, altValue)

column:. La colonna si sta valutando

altValue:. Il valore che si desidera tornare se 'colonna' è nullo

Esempio:

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

* Nota: La funzione COALESCE () funziona esattamente come avviene per altri database.

Fonti:

Si può facilmente definire tale funzione e usarlo poi:

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

o stessa versione minified:

ifnull <- function(x,y) {if(is.na(x)==TRUE) return (y) else return (x);}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top