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()
, undEMPTY()
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 undSELECT
SQL verarbeiten NULL-Werte über die IS NULL- und IS NOT NULL-Klauseln.SQL-Aggregatfunktionen wie
MAX()
,MIN()
undSUM()
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
, BROWSE
und 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 nYTDSales
zurü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.