Eu gostaria de evitar muitas verificações como a seguinte em meu código:
myObj.someStringField = rdr.IsDBNull(someOrdinal)
? string.Empty
: rdr.GetString(someOrdinal);
Achei que poderia simplesmente fazer minha consulta cuidar dos nulos fazendo algo assim:
SELECT myField1, [isnull](myField1, '')
FROM myTable1
WHERE myField1 = someCondition
Estou usando o SQLite e ele não parece reconhecer a isnull
função. Também tentei alguns equivalentes reconhecidos em outros bancos de dados ( NVL()
, IFNULL()
e COALESCE()
), mas o SQLite não parece reconhecer nenhum deles.
Alguém tem alguma sugestão ou conhece a melhor maneira de fazer isso. Infelizmente, o banco de dados não possui valores padrão para todos os campos. Além disso, preciso usar algumas LEFT JOIN
cláusulas em alguns casos, em que alguns dos campos retornados serão nulos porque o registro correspondente na LEFT JOIN
tabela não existirá.
Tente isto
por exemplo
A
ifnull()
função retorna uma cópia de seu primeiro argumento diferente de NULL, ou NULL se ambos os argumentos forem NULL.Ifnull()
deve ter exatamente 2 argumentos. Aifnull()
função é equivalente acoalesce()
dois argumentos.fonte
ifnull
eu queria ... Só precisava retirar os colchetes que estava usando.Se não houver
ISNULL()
método, você pode usar esta expressão em seu lugar:Isso funciona da mesma forma que
ISNULL(fieldname, 0)
.fonte
ifnull
é o equivalente SQLite daisnull
função sobre a qual a pergunta estava perguntando. Para quem está lendo isso agora, consulte a resposta do SQLMenace (de mais de um ano e meio antes, no entanto) antes de escrever sua própria solução usandoCASE
.CASE
declarações pode fazer mais sentido do queIFNULL
.isnull
em outros sistemas e eu não gostaria de encorajar as pessoas a "criarem seus próprios".Use
IS NULL
ouIS NOT NULL
na cláusula WHERE em vez do método ISNULL ():fonte
myField1
possuem um valor não nulo, ele deseja substituir o valor na coluna de resultado por um diferente, se o valor da linha for nulo.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 que para outros bancos de dados.
Fontes:
fonte
Você pode definir facilmente essa função e usá-la em seguida:
ou a mesma versão reduzida:
fonte