Pergunta

Eu gostaria de evitar ter muitos cheques como o seguinte no meu código:

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

Achei que poderia apenas ter minha consulta cuidar dos nulos, fazendo algo assim:

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

Estou usando o sqlite e não parece reconhecer o isnull função. Eu também tentei alguns equivalentes reconhecidos em outros bancos de dados (NVL(), IFNULL() e COALESCE()), mas Sqlite não parece reconhecer nenhum deles.

Alguém tem alguma sugestão ou conhece uma maneira melhor de fazer isso. Infelizmente, o banco de dados não possui valores padrão para todos os campos. Além disso, eu preciso usar alguns LEFT JOIN cláusulas em alguns casos, onde alguns dos campos retornados serão nulos porque o registro correspondente no LEFT JOIN Tabela não existirá.

Foi útil?

Solução

IFNULL, Veja aqui: http://www.sqlite.org/lang_corefunc.html#ifnull

Sem suportes em torno da função

Outras dicas

Tente isso

ifnull(X,Y)  

por exemplo

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

o ifnull() A função retorna uma cópia de seu primeiro argumento não nulo, ou nulo se ambos os argumentos forem nulos. Ifnull() Deve ter exatamente 2 argumentos. o ifnull() A função é equivalente a coalesce() com dois argumentos.

Se não houver ISNULL() Método, você pode usar esta expressão:

CASE WHEN fieldname IS NULL THEN 0 ELSE fieldname END

Isso funciona da mesma forma que ISNULL(fieldname, 0).

Usar IS NULL ou IS NOT NULL em onde cláusula em vez do método isnull ():

SELECT myField1
FROM myTable1
WHERE myField1 IS NOT NULL

Para o equivalente a NVL () e ISNULL () Use:

IFNULL(column, altValue)

column : A coluna que você está avaliando.

altValue : O valor que você deseja retornar se 'coluna' for nulo.

Exemplo:

SELECT IFNULL(middle_name, 'N/A') FROM person;

*Nota: a função Coalesce () funciona da mesma forma para outros bancos de dados.

Fontes:

Você pode definir facilmente essa função e usá -la então:

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

ou a mesma versão minificada:

ifnull <- function(x,y) {if(is.na(x)==TRUE) return (y) else return (x);}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top