Freigeben über


Verwenden von NULL-Werten in Visual FoxPro

In diesem Artikel wird beschrieben, wie Null-Datenwerte in Visual FoxPro-Befehlen und -Funktionen verwendet werden.

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

Übersicht

Visual FoxPro, Version 3.0, unterstützt NULL-Datenwerte. Versionen von FoxPro vor Version 3.0 unterstützten keine NULL-Datenwerte. In diesem Artikel werden die allgemeinen Regeln beschrieben, die Visual FoxPro für die Behandlung von Nullwerten (dargestellt als .NULL.) beim Übergeben an Visual FoxPro-Befehle oder -Funktionen verwendet.

Weitere Informationen

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

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

Allgemeine Regeln für Nullwerte

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

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

  • Funktionen, die Nullwerte akzeptieren, werden als Ergebnis zurückgegeben .NULL. .

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

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

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

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

  • SQL-Aggregatfunktionen, wie z. B. MAX(), MIN() und SUM(), ignorieren alle Nullwerte im Aggregat.

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

Im restlichen Teil 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. Beispielsweise gibt der USE Befehl 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 alphabetischen Wert; wenn eine .NULL. übergeben wird, wird der Fehler Tabellennummer ist ungültig generiert.

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

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

Dies würde meine Tabelle im ersten verfügbaren Arbeitsbereich öffnen. Weitere Informationen zur Funktion finden Sie in der Hilfedatei oder in der NVL() Visual FoxPro-Dokumentation.

Funktionen, die Nullwerte akzeptieren, geben .NULL. zurück. infolgedessen

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, einen NULL-Wert als Argument zu übergeben, ohne einen Fehler zu generieren, aber eine .NULL. wird von der Funktion zurückgegeben. Anders ausgedrückt: Wenn Sie einen Nullwert an eine Funktion übergeben, ist das Ergebnis immer NULL. Dies ist auch die Behandlung von Nullwerten in mathematischen Gleichungen. Beispielsweise ergibt ein Nullwert, der zu 500 hinzugefügt wird, null, und ein Nullwert, der mit null multipliziert wird, ergibt ebenfalls null (nicht null).

Der folgende Beispielcode gibt folgendes zurück .NULL.:

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

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

INSERT-SQL und SELECT-SQL verarbeiten Nullwerte mithilfe neuer Klauseln.

Zwei neue Klauseln (IS NULL und IS NOT NULL) behandeln Nullwerte in den INSERT und SELECT SQL-Befehlen. Wenn Sie beispielsweise alle Datensätze in einer Tabelle suchen möchten, in der cLastName nicht null ist, verwenden Sie den folgenden Befehl:

SELECT cLastName FROM mytable WHERE cLastName IS NOT NULL

Verwenden Sie die IS NULL-Klausel, um Nullwerte zu finden.

SQL-Aggregatfunktionen ignorieren Nullwerte

Eine Aggregatfunktion ist eine Funktion, die einen numerischen Vorgang ausführt, z. B. Addition, Minimum, Maximum oder Mittelwert für eine Gruppe (Aggregat) von Werten. 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 nYTDSales" zurück:

SELECT MAX(nYTDSales) from mytable

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

Weitere Informationen über den .NULL.-Wert und die oben beschriebenen Funktionen finden Sie in der Visual FoxPro-Hilfedatei unter den entsprechenden Themen.