Usar valores nulos no Visual FoxPro

Este artigo descreve como usar valores de dados nulos em comandos e funções do Visual FoxPro.

Versão original do produto: Visual FoxPro
Número de KB original: 130307

Resumo

O Visual FoxPro versão 3.0 dá suporte a valores de dados nulos. As versões do FoxPro anteriores à versão 3.0 não dão suporte diretamente a valores de dados nulos. Este artigo descreve as regras gerais que o Visual FoxPro segue para lidar com valores nulos (representados como .NULL.) quando eles passam para comandos ou funções do Visual FoxPro.

Mais informações

Use um valor nulo (.NULL.) quando um valor estiver ausente, irrelevante ou desconhecido. Nas versões anteriores do FoxPro, valores desconhecidos ou ausentes eram representados por espaços ou zeros, o que poderia ter sido mal interpretado. Com o Visual FoxPro, agora você pode armazenar um valor nulo em um campo.

É importante observar que um valor nulo (.NULL.) no Visual FoxPro não é o mesmo que um valor vazio, em branco ou zero. Null representa a ausência de um valor, portanto, nulo nunca é igual a, maior ou menor que outro valor, nulo ou não nulo. O suporte do Visual FoxPro para valores nulos está em conformidade com os padrões ANSI e afeta qualquer área do produto em que valores e expressões são usados.

Regras gerais para valores nulos

Aqui estão as regras gerais para valores nulos passados para comandos ou funções do Visual FoxPro:

  • Os comandos geram um erro quando passado um nulo.

  • Funções que aceitam valores nulos retornam .NULL. como resultado.

  • As funções que esperam um valor numérico gerarão um erro se fornecidas com um nulo.

  • ISBLANK(), ISDIGIT(), ISLOWER(), ISUPPER(), , ISALPHA()e EMPTY() cada retorno falso (.F.) quando passado um valor nulo.

  • ISNULL() retorna true (.T.) quando passado um valor nulo.

  • Os comandos INSERT SQL e SELECT SQL processam valores nulos por meio das cláusulas IS NULL e IS NOT NULL.

  • Funções de agregação de SQL, como MAX(), MIN()e SUM() ignoram todos os valores nulos no agregado.

  • As funções de agregação do Visual FoxPro se propagam .NULL. se todos os valores fornecidos forem valores nulos, caso contrário, qualquer valor nulo será ignorado.

O restante deste artigo fornece mais informações e exemplos para essas regras gerais.

Os comandos geram um erro quando passado um nulo

Um comando Visual FoxPro é uma instrução que resulta em uma ação. Exemplos de comandos são USE, BROWSEe DELETE. Por exemplo, o USE comando retorna um erro para este código:

STORE .NULL. TO nWorkArea
USE mytable IN (nWorkArea)

A cláusula IN do USE comando está esperando um valor numérico ou alfa, quando passado um .NULL. erro o número da tabela é inválido é gerado.

A NVL() função pode ser usada para remover valores nulos de cálculos ou operações em que valores nulos não têm suporte ou não são relevantes.

STORE .NULL. TO nWorkArea
USE mytable IN NVL(nWorkArea,0)

Isso abriria a mytable na primeira área de trabalho disponível. Consulte o arquivo Ajuda ou a documentação do Visual FoxPro para obter mais informações sobre a NVL() função.

Funções que aceitam valores nulos retornam . NULL. como resultado

Uma função Visual FoxPro é uma rotina que executa uma tarefa específica e usa zero ou mais argumentos. Exemplos de funções incluem ISBLANK(), UPPER()e SUBSTR(). A maioria das funções do Visual FoxPro permite que um valor nulo seja passado como um argumento sem gerar um erro, no entanto, um .NULL. é retornado da função. Em outras palavras, quando você passa um valor nulo para uma função, o resultado é sempre nulo. É assim também que os valores nulos são tratados em equações matemáticas. Por exemplo, um valor nulo adicionado a 500 é igual a nulo e um valor nulo multiplicado por zero é igual a nulo (não zero).

O código de exemplo a seguir retorna .NULL.:

cLastName = "Johnson"
nBegin = 5
nExtract = .NULL.
?SUBSTR(cLastName,nBegin,nExtract)

As exceções a essa regra são as ISBLANK()funções , ISDIGIT(), ISLOWER(), ISUPPER(), ISALPHA()e EMPTY() - cada uma das quais retornam um .F. valor. A ISNULL() função retorna um .T. valor.

INSERT SQL e SELECT SQL processam Valores Nulos usando novas cláusulas

Duas novas cláusulas (IS NULL e IS NOT NULL) manipulam nulos nos comandos e SELECT SQLINSERT. Por exemplo, para localizar todos os registros em uma tabela em que o cLastName não é nulo, use este comando:

SELECT cLastName FROM mytable WHERE cLastName IS NOT NULL

Para localizar valores nulos, use a cláusula IS NULL.

Funções agregadas de SQL ignoram valores nulos

Uma função de agregação é uma função que executa uma operação numérica, como adição, mínimo, máximo ou média em um grupo (agregado) de valores. Exemplos de funções agregadas incluem MAX(), MIN()e SUM().

O SELECT comando SQL, por exemplo, pode usar funções de agregação para recuperar valores numéricos de tabelas. Por exemplo, o comando a seguir SELECT retorna o valor máximo de um campo chamado nYTDSales:

SELECT MAX(nYTDSales) from mytable

Qualquer função de agregação SQL executada em um campo que contém .NULL. valores ignora os .NULL. valores, retornando um resultado que trata os valores nulos como se eles não existissem (não fazem parte da agregação).

Para obter mais informações sobre o .NULL. valor e as funções descritas acima, pesquise tópicos no arquivo Visual FoxPro Help.