Me gustaría evitar tener muchas verificaciones como las siguientes en mi código:
myObj.someStringField = rdr.IsDBNull(someOrdinal)
? string.Empty
: rdr.GetString(someOrdinal);
Pensé que podría hacer que mi consulta se encargara de los nulos haciendo algo como esto:
SELECT myField1, [isnull](myField1, '')
FROM myTable1
WHERE myField1 = someCondition
Sin embargo, estoy usando SQLite y no parece reconocer la isnull
función. 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 conoce una mejor manera de hacer esto? Desafortunadamente, la base de datos no tiene valores predeterminados para todos los campos. Además, necesito usar algunas LEFT JOIN
cláusulas en algunos casos, donde algunos de los campos devueltos serán nulos porque el registro coincidente en la LEFT JOIN
tabla no existirá.
Prueba esto
p.ej
La
ifnull()
función devuelve una copia de su primer argumento no NULL, o NULL si ambos argumentos son NULL.Ifnull()
debe tener exactamente 2 argumentos. Laifnull()
función es equivalente acoalesce()
con dos argumentos.fuente
ifnull
que quería ... Solo necesitaba eliminar los corchetes que estaba usando.Si no hay un
ISNULL()
método, puede usar esta expresión en su lugar:Esto funciona igual que
ISNULL(fieldname, 0)
.fuente
ifnull
es el equivalente SQLite de laisnull
función sobre la que preguntaba la pregunta. Para cualquiera que lea esto ahora, consulte la respuesta de SQLMenace (de más de un año y medio antes) antes de escribir su propia solución usandoCASE
.CASE
declaraciones podría tener más sentido queIFNULL
.isnull
en otros sistemas y no quisiera animar a la gente a "lanzar el suyo".Utilice
IS NULL
oIS NOT NULL
en la cláusula WHERE en lugar del método ISNULL ():fuente
myField1
tiene un valor no nulo, quiere reemplazar el valor en la columna de resultados con uno diferente, si el valor de la fila es nulo.Para el equivalente de NVL () e ISNULL () use:
IFNULL(column, altValue)
column
: La columna que está evaluando.altValue
: El valor que desea devolver si 'columna' es nulo.Ejemplo:
SELECT IFNULL(middle_name, 'N/A') FROM person;
* Nota: La función COALESCE () funciona igual que con otras bases de datos.
Fuentes:
fuente
Puede definir fácilmente dicha función y usarla luego:
o la misma versión minificada:
fuente