.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
IFNULL
, mira aquí: http://www.sqlite.org/lang_corefunc.html#ifnull
sin corchetes alrededor de la función