Verificar o valor nulo na pesquisa de acesso do MS

no servidor SQL podemos usar a função IsNull () para verificar se o valor da expressão é nulo ou não. Para ex.

Select IsNull(sum(amount),0) as TotalAmount
  From Payments 

da mesma forma, existe qualquer função na consulta MS Access para verificar o nulo. Preciso que a mesma declaração seja executada no MS Access Query.

alguém pode dizer-me o substituto para IsNull() no MS Access.

Obrigado por partilhares o teu tempo.

Author: skaffman, 2011-01-28

3 answers

Praticamente o equivalente no Access é a função nz.

Há uma boa página sobre como usá-lo aqui .

No entanto, se estiver a usar o Access apenas como uma infra-estrutura de base de dados e a usar o Jet no seu conectionstring, a nz não estará disponível para si.
 6
Author: hawbsl, 2011-01-28 12:20:31

Usando o Jet / ACE, a sua pesquisa pode ser reescrita como:

SELECT IIf(Sum(amount) Is Null, 0, Sum(amount)) AS TotalAmount
FROM Payments

Isto deve funcionar mesmo a partir de C# porque Is Null e IIf são ambos construídos para Jet/ACE. Por favor, note o espaço em Is Null e a falta de parêntesis (é uma declaração , não uma função ).

Há dois bónus adicionais para usar IIf e Is Null em oposição a Nz mesmo que Nz esteja disponível para ti:

  • ele executa mais rápido porque todo o processamento é feito dentro do motor de banco de dados (para que não tenha de fazer chamadas de funções para a biblioteca de acesso)
  • mantém o tipo original do campo; dado que Nz devolve uma variante, o Jet/ACE é forçado a mostrar o resultado como uma sequência (que normalmente não é o que deseja ao lidar com datas, números, etc.)

ATUALIZAÇÃO: Allen Browne tem um excelente primer sobre o uso de IIf, Nz, IsNull(), e Is Null. Estava a planear postar esse link como meu resposta original, mas não consegui encontrar a página na altura. Fiz o melhor que pude de memória, mas o verdadeiro crédito vai para o Sr. Browne.

 10
Author: mwolfe02, 2011-01-29 03:21:17

Igualmente. , também pode ser usado na data e hora da ordenação

.....ORDER BY TRANSDATE ASC,(IIf([PaymentTime] Is Null, '23:59:59', [PaymentTime])) DESC
 0
Author: Myk Agustin, 2016-08-30 08:46:56