Verwenden von NULL-Werten in Visual FoxPro

In diesem Artikel wird beschrieben, wie Sie NULL-Datenwerte in Visual FoxPro-Befehlen und -Funktionen verwenden.

Ursprüngliche Produktversion: Visual FoxPro
Ursprüngliche KB-Nummer: 130307

Zusammenfassung

Visual FoxPro Version 3.0 unterstützt NULL-Datenwerte. Versionen von FoxPro vor Version 3.0 unterstützten nicht direkt NULL-Datenwerte. In diesem Artikel werden die allgemeinen Regeln beschrieben, die Visual FoxPro für die Behandlung von NULL-Werten (dargestellt als .NULL.) bei der Übergabe an Visual FoxPro-Befehle oder -Funktionen befolgt.

Weitere Informationen

Verwenden Sie einen NULL-Wert (.NULL.), wenn ein Wert fehlt, irrelevant oder unbekannt ist. In früheren Versionen von FoxPro wurden unbekannte oder fehlende Werte durch Leerzeichen oder Nullen dargestellt, die möglicherweise falsch interpretiert wurden. Mit Visual FoxPro können Sie jetzt einen NULL-Wert in einem Feld speichern.

Es ist wichtig zu beachten, dass ein NULL-Wert (.NULL.) in Visual FoxPro nicht mit einem leeren, leeren oder null-Wert identisch ist. Null stellt das Fehlen eines Werts dar, sodass NULL nie gleich, größer als oder kleiner als ein anderer Wert ist, NULL oder ungleich NULL. Die Visual FoxPro-Unterstützung für NULL-Werte entspricht den ANSI-Standards und wirkt sich auf alle Bereiche des Produkts aus, in denen Werte und Ausdrücke verwendet werden.

Allgemeine Regeln für NULL-Werte

Hier sind die allgemeinen Regeln für NULL-Werte, die an Visual FoxPro-Befehle oder -Funktionen übergeben werden:

  • Befehle generieren einen Fehler, wenn ein NULL-Wert übergeben wird.

  • Funktionen, die NULL-Werte akzeptieren, geben als Ergebnis zurück .NULL. .

  • Funktionen, die einen numerischen Wert erwarten, generieren einen Fehler, wenn sie mit null angegeben werden.

  • ISBLANK(), ISDIGIT(), ISLOWER(), ISUPPER()ISALPHA(), und EMPTY() geben jeweils false (.F.) zurück, wenn ein NULL-Wert übergeben wurde.

  • ISNULL() gibt true (.T.) zurück, wenn ein NULL-Wert übergeben wurde.

  • Die Befehle INSERT SQL und SELECT SQL verarbeiten NULL-Werte über die IS NULL- und IS NOT NULL-Klauseln.

  • SQL-Aggregatfunktionen wie MAX(), MIN()und SUM() ignorieren alle NULL-Werte im Aggregat.

  • Visual FoxPro-Aggregatfunktionen werden .NULL. weitergegeben, wenn alle angegebenen Werte NULL-Werte sind, andernfalls werden alle NULL-Werte ignoriert.

Im weiteren Verlauf dieses Artikels finden Sie weitere Informationen und Beispiele für diese allgemeinen Regeln.

Befehle generieren einen Fehler, wenn ein NULL-Wert übergeben wird

Ein Visual FoxPro-Befehl ist eine Anweisung, die zu einer Aktion führt. Beispiele für Befehle sind USE, BROWSEund DELETE. Der USE Befehl gibt beispielsweise einen Fehler für diesen Code zurück:

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

Die IN-Klausel des USE Befehls erwartet einen numerischen oder Alphawert, wenn ein .NULL. übergeben wird, wird der Fehler Table Number is Invalid generiert.

Die NVL() Funktion kann verwendet werden, um NULL-Werte aus Berechnungen oder Vorgängen zu entfernen, bei denen NULL-Werte nicht unterstützt werden oder nicht relevant sind.

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

Dadurch würde mytable im ersten verfügbaren Arbeitsbereich geöffnet. Weitere Informationen zur Funktion finden Sie in der Hilfedatei oder in der NVL() Visual FoxPro-Dokumentation.

Funktionen, die NULL-Werte akzeptieren, geben zurück. NULL. als Ergebnis

Eine Visual FoxPro-Funktion ist eine Routine, die eine bestimmte Aufgabe ausführt und null oder mehr Argumente akzeptiert. Beispiele für Funktionen sind ISBLANK(), UPPER()und SUBSTR(). Die meisten Visual FoxPro-Funktionen ermöglichen es, dass ein NULL-Wert als Argument übergeben wird, ohne einen Fehler zu generieren. Von der Funktion wird jedoch ein .NULL. zurückgegeben. Anders ausgedrückt: Wenn Sie einen NULL-Wert an eine Funktion übergeben, ist das Ergebnis immer NULL. Auf diese Weise werden NULL-Werte auch in mathematischen Gleichungen behandelt. Beispielsweise entspricht ein null-Wert, der zu 500 hinzugefügt wird, null, und ein mit 0 multiplizierter NULL-Wert gleich NULL (nicht 0).

Der folgende Beispielcode gibt zurück .NULL.:

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

Ausnahmen von dieser Regel sind die ISBLANK()Funktionen , ISDIGIT(), ISLOWER(), ISUPPER(), ISALPHA()und EMPTY() , die jeweils einen .F. Wert zurückgeben. Die ISNULL() Funktion gibt einen .T. Wert zurück.

INSERT SQL- und SELECT SQL-Prozess null-Werte unter Verwendung neuer Klauseln

Zwei neue Klauseln (IS NULL und IS NOT NULL) behandeln NULL-Werte in den INSERT SQL-Befehlen und SELECT . Verwenden Sie beispielsweise den folgenden Befehl, um alle Datensätze in einer Tabelle zu suchen, in der cLastName nicht NULL ist:

SELECT cLastName FROM mytable WHERE cLastName IS NOT NULL

Um NULL-Werte zu suchen, verwenden Sie die IS NULL-Klausel.

SQL-Aggregatfunktionen ignorieren NULL-Werte

Eine Aggregatfunktion ist eine Funktion, die einen numerischen Vorgang wie Addition, Minimum, Maximum oder Mittelwert für eine Gruppe (Aggregat) von Werten ausführt. Beispiele für Aggregatfunktionen sind MAX(), MIN()und SUM().

Der SELECT SQL-Befehl kann beispielsweise Aggregatfunktionen verwenden, um numerische Werte aus Tabellen abzurufen. Der folgende SELECT Befehl gibt z. B. den Maximalwert aus einem Feld mit dem Namen nYTDSaleszurück:

SELECT MAX(nYTDSales) from mytable

Jede SQL-Aggregatfunktion, die für ein Feld ausgeführt wird, das Werte enthält .NULL. , ignoriert die .NULL. Werte und gibt ein Ergebnis zurück, das die NULL-Werte so behandelt, als wären sie nicht vorhanden (sind nicht Teil des Aggregats).

Weitere Informationen zum .NULL. Wert und zu den oben beschriebenen Funktionen finden Sie in der Visual FoxPro-Hilfedatei.