Pregunta

Me gustaría evitar tener muchos controles como el siguiente en mi código:

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

pensé que sólo podía tener mi consulta cuidar de los nulos haciendo algo como esto:

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

Estoy usando SQLite y aunque no parece reconocer la función isnull. También he intentado algunas otras equivalentes reconocidas en otras bases de datos (NVL(), IFNULL() y COALESCE()), pero SQLite no parece reconocer a ninguno de ellos.

¿Alguien tiene alguna sugerencia o sabe de una mejor manera de hacer esto. Por desgracia, la base de datos no tiene valores por defecto para todos los campos. Además, tengo que utilizar algunas cláusulas LEFT JOIN en algunos casos, en los que algunos de los campos devueltos serán nulos porque no existirá el registro coincidente en la tabla LEFT JOIN.

¿Fue útil?

Solución

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

sin paréntesis angulares de la función

Otros consejos

Probar

ifnull(X,Y)  

por ejemplo

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 método ISNULL(), puede utilizar esta expresión en su lugar:

CASE WHEN fieldname IS NULL THEN 0 ELSE fieldname END

Esto funciona igual que ISNULL(fieldname, 0).

Utilice IS NULL o IS NOT NULL en cláusula WHERE en lugar de ISNULL () Método:

SELECT myField1
FROM myTable1
WHERE myField1 IS NOT NULL

Para el equivalente de NVL () y ISNULL () Uso:

IFNULL(column, altValue)

column:. La columna 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 de la misma como lo hace con otras bases de datos.

Fuentes:

Puede definir fácilmente dicha función y luego usarlo:

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

o misma versión miniaturizada:

ifnull <- function(x,y) {if(is.na(x)==TRUE) return (y) else return (x);}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top