SQLite equivalente a ISNULL (), NVL (), IFNULL () o COALESCE ()

Me gustaría evitar tener muchos controles como los siguientes en mi código:

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

Pensé que podría hacer que mi consulta se ocupara de los nulos haciendo algo como esto:

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

Aunque estoy usando SQLite y no parece reconocer la función isnull . También probé algunos equivalentes reconocidos en otras bases de datos ( NVL() , IFNULL() y COALESCE() ), pero SQLite no parece reconocer ninguno de ellos.

¿Alguien tiene alguna sugerencia o sabe de una mejor manera de hacer esto? Lamentablemente, la base de datos no tiene valores predeterminados para todos los campos. Además, necesito usar algunas cláusulas LEFT JOIN en algunos casos, donde algunos de los campos devueltos serán nulos porque el registro coincidente en la tabla LEFT JOIN no existirá.

IFNULL , mira aquí: http://www.sqlite.org/lang_corefunc.html#ifnull

sin corchetes alrededor de la función

Prueba esto

 ifnull(X,Y) 

p.ej

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

La función ifnull() devuelve una copia de su primer argumento no NULL, o NULL si ambos argumentos son NULL. Ifnull() debe tener exactamente 2 argumentos. La función ifnull() es equivalente a coalesce() con dos argumentos.

Si no hay un método ISNULL() , puede usar esta expresión en su lugar:

 CASE WHEN fieldname IS NULL THEN 0 ELSE fieldname END 

Esto funciona igual que ISNULL(fieldname, 0) nombre de ISNULL(fieldname, 0) .

Use IS NULL o IS NOT NULL en la cláusula WHERE en lugar del método ISNULL ():

 SELECT myField1 FROM myTable1 WHERE myField1 IS NOT NULL 

Puedes definir fácilmente tal función y usarla luego:

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

o la misma versión minimizada:

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