Uso de valores NULL en Visual FoxPro

En este artículo se describe cómo usar valores de datos NULL en comandos y funciones de Visual FoxPro.

Versión original del producto: Visual FoxPro
Número de KB original: 130307

Resumen

Visual FoxPro versión 3.0 admite valores de datos NULL. Las versiones de FoxPro anteriores a la versión 3.0 no admitían directamente valores de datos NULL. En este artículo se describen las reglas generales que sigue Visual FoxPro para controlar valores NULL (representados como .NULL.) cuando se pasan a comandos o funciones de Visual FoxPro.

Más información

Use un valor null (.NULL.) cuando falte un valor, irrelevante o desconocido. En versiones anteriores de FoxPro, los valores desconocidos o que faltaban se representaban mediante espacios o ceros, que podrían haberse malinterpretado. Con Visual FoxPro, ahora puede almacenar un valor NULL en un campo.

Es importante tener en cuenta que un valor NULL (.NULL.) en Visual FoxPro no es el mismo que un valor vacío, en blanco o cero. Null representa la ausencia de un valor, por lo que null nunca es igual a, mayor o menor que otro valor, null o no null. La compatibilidad de Visual FoxPro con valores NULL cumple con los estándares ANSI y afecta a cualquier área del producto donde se usan valores y expresiones.

Reglas generales para valores NULL

Estas son las reglas generales para los valores NULL pasados a comandos o funciones de Visual FoxPro:

  • Los comandos generan un error cuando se pasa un valor NULL.

  • Las funciones que aceptan valores NULL devuelven .NULL. como resultado.

  • Las funciones que esperan un valor numérico generarán un error si se proporcionan con un valor NULL.

  • ISBLANK(), ISDIGIT(), ISLOWER(), ISUPPER(), ISALPHA()y EMPTY() cada uno devuelve false (.F.) cuando se pasa un valor NULL.

  • ISNULL() devuelve true (.T.) cuando se pasa un valor NULL.

  • Los comandos INSERT SQL y SELECT SQL procesan valores NULL a través de las cláusulas IS NULL e IS NOT NULL.

  • Las funciones de agregado de SQL, como MAX(), MIN()y SUM() omiten todos los valores NULL del agregado.

  • Las funciones de agregado de Visual FoxPro se propagan .NULL. si todos los valores proporcionados son valores NULL; de lo contrario, se omite cualquier valor NULL.

El resto de este artículo proporciona más información y ejemplos para estas reglas generales.

Los comandos generan un error cuando se pasa un valor NULL

Un comando de Visual FoxPro es una instrucción que da como resultado una acción. Algunos ejemplos de comandos son USE, BROWSEy DELETE. Por ejemplo, el USE comando devuelve un error para este código:

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

La cláusula IN del USE comando espera un valor numérico o alfa, cuando se pasa un error se genera el .NULL.error Número de tabla no válido .

La NVL() función se puede usar para quitar valores NULL de cálculos o operaciones en las que no se admiten valores NULL o no son pertinentes.

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

Esto abriría mytable en la primera workarea disponible. Consulte el archivo de Ayuda o la documentación de Visual FoxPro para obtener más información sobre la NVL() función.

Las funciones que aceptan valores NULL devuelven . NULL. como resultado

Una función de Visual FoxPro es una rutina que realiza una tarea específica y toma cero o más argumentos. Algunos ejemplos de funciones son ISBLANK(), UPPER()y SUBSTR(). La mayoría de las funciones de Visual FoxPro permiten pasar un valor NULL como argumento sin generar un error; sin embargo, se devuelve un .NULL. valor de la función. En otras palabras, cuando se pasa un valor NULL a una función, el resultado siempre es NULL. Así es también cómo se tratan los valores NULL en ecuaciones matemáticas. Por ejemplo, un valor null agregado a 500 es igual a null y un valor NULL multiplicado por cero es igual a null (no a cero).

El código de ejemplo siguiente devuelve .NULL.:

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

Las excepciones a esta regla son las ISBLANK()funciones , ISDIGIT(), ISLOWER(), ISUPPER(), ISALPHA()y EMPTY() , cada una de las cuales devuelve un .F. valor. La ISNULL() función devuelve un .T. valor.

INSERT SQL y SELECT SQL procesan valores NULL mediante nuevas cláusulas

Dos nuevas cláusulas (IS NULL y IS NOT NULL) controlan valores NULL en los INSERT comandos y SELECT SQL. Por ejemplo, para buscar todos los registros de una tabla donde cLastName no es null, use este comando:

SELECT cLastName FROM mytable WHERE cLastName IS NOT NULL

Para buscar valores NULL, use la cláusula IS NULL.

Las funciones de agregado de SQL omiten valores NULL

Una función de agregado es una función que realiza una operación numérica como suma, mínimo, máximo o promedio en un grupo (agregado) de valores. Algunos ejemplos de funciones de agregado son MAX(), MIN()y SUM().

El SELECT comando SQL, por ejemplo, puede usar funciones de agregado para recuperar valores numéricos de las tablas. Por ejemplo, el comando siguiente SELECT devuelve el valor máximo de un campo denominado nYTDSales:

SELECT MAX(nYTDSales) from mytable

Cualquier función de agregado de SQL realizada en un campo que contiene .NULL. valores omite los .NULL. valores y devuelve un resultado que trata los valores NULL como si no existiera (no forman parte del agregado).

Para obtener más información sobre el .NULL. valor y las funciones descritas anteriormente, busque temas en el archivo de Ayuda de Visual FoxPro.