.net sqlite dbnull

.net - SQLite equivalente a ISNULL(), NVL(), IFNULL() o COALESCE()



sqlite is null (5)

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.

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á.


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);}


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