Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano sposób używania wartości danych null w poleceniach i funkcjach programu Visual FoxPro.
Oryginalna wersja produktu: Visual FoxPro
Oryginalny numer KB: 130307
Podsumowanie
Program Visual FoxPro w wersji 3.0 obsługuje wartości danych o wartościach null. Wersje programu FoxPro wcześniejsze niż wersja 3.0 nie obsługiwały bezpośrednio wartości null. W tym artykule opisano ogólne reguły programu Visual FoxPro w celu obsługi wartości null (reprezentowanych jako .NULL.
) po przekazaniu ich do poleceń lub funkcji Visual FoxPro.
Więcej informacji
Użyj wartości null (.NULL.
), jeśli brakuje wartości, nieistotnej lub nieznanej. W poprzednich wersjach programu FoxPro wartości, które były nieznane lub brakujące, były reprezentowane przez spacje lub zera, które mogły zostać błędnie zinterpretowane. Za pomocą programu Visual FoxPro można teraz przechowywać wartość null w polu.
Należy pamiętać, że wartość null (.NULL.
) w programie Visual FoxPro nie jest taka sama, jak wartość pusta, niewypełniona, czy zero. Null reprezentuje brak wartości, więc null nigdy nie jest równy, większy niż ani mniejszy niż inna wartość, czy to null, czy nie-null. Obsługa programu Visual FoxPro dla wartości null jest zgodna ze standardami ANSI i ma wpływ na dowolny obszar produktu, w którym są używane wartości i wyrażenia.
Ogólne reguły dotyczące wartości null
Poniżej przedstawiono ogólne reguły dotyczące wartości null przekazywanych do poleceń lub funkcji programu Visual FoxPro:
Polecenia generują błąd po przekazaniu wartości null.
Funkcje, które akceptują wartości null, zwracają
.NULL.
jako wynik.Funkcje oczekujące wartości liczbowej wygenerują błąd w przypadku dostarczenia wartości null.
ISBLANK()
,ISDIGIT()
,ISLOWER()
,ISUPPER()
,ISALPHA()
, iEMPTY()
zwracają wartość false (.F.), gdy przekazane jest null.ISNULL()
zwraca wartość true (T.), gdy zostanie przekazana wartość pusta.Polecenia
INSERT
SQL iSELECT
SQL przetwarzają wartości null za pośrednictwem klauzul IS NULL i IS NOT NULL.Funkcje agregujące SQL, takie jak
MAX()
,MIN()
iSUM()
ignorują wszystkie wartości null w agregacji.Funkcje agregujące programu Visual FoxPro propagują
.NULL.
, jeśli wszystkie podane wartości są wartościami null, w przeciwnym razie każdy null jest ignorowany.
W pozostałej części tego artykułu przedstawiono więcej informacji i przykładów dotyczących tych ogólnych reguł.
Polecenia generują błąd po przekazaniu wartości null
Polecenie Visual FoxPro jest instrukcją, która powoduje działanie. Przykłady poleceń to USE
, BROWSE
i DELETE
. Na przykład USE
polecenie zwraca błąd dla tego kodu:
STORE .NULL. TO nWorkArea
USE mytable IN (nWorkArea)
Klauzula IN polecenia USE
oczekuje wartości liczbowej lub alfanumerycznej, a po przekazaniu .NULL.
generowany jest błąd 'Nieprawidłowy numer tabeli'.
Funkcja NVL()
może służyć do usuwania wartości null z obliczeń lub operacji, w których wartości null nie są obsługiwane lub nie są istotne.
STORE .NULL. TO nWorkArea
USE mytable IN NVL(nWorkArea,0)
Spowoduje to otwarcie tabeli "mytable" w pierwszym dostępnym obszarze roboczym. Aby uzyskać więcej informacji na temat NVL()
funkcji, zobacz plik Pomocy lub dokumentację programu Visual FoxPro.
Funkcje akceptujące wartości null zwracają wartość . ZERO. w rezultacie
Funkcja Visual FoxPro to rutynowa, która wykonuje określone zadanie i przyjmuje zero lub więcej argumentów. Przykłady funkcji to ISBLANK()
, UPPER()
i SUBSTR()
. Większość funkcji Visual FoxPro pozwala na przekazanie wartości NULL jako argumentu bez generowania błędu, jednak funkcja zwraca .NULL.
. Innymi słowy, po przekazaniu wartości null do funkcji wynik jest zawsze zerowy. Jest to również sposób traktowania wartości null w równaniach matematycznych. Na przykład wartość null dodana do 500 jest równa null, a wartość null pomnożona przez zero jest równa null (a nie zero).
Poniższy przykładowy kod zwraca wartość .NULL.
:
cLastName = "Johnson"
nBegin = 5
nExtract = .NULL.
?SUBSTR(cLastName,nBegin,nExtract)
Wyjątki od tej reguły to funkcje: ISBLANK()
, ISDIGIT()
, ISLOWER()
, ISUPPER()
, ISALPHA()
i EMPTY()
, z których każda zwraca wartość .F.
. Funkcja ISNULL()
zwraca .T.
wartość.
INSERT SQL i SELECT SQL przetwarzają wartości null za pomocą nowych klauzul.
Dwie nowe klauzule (IS NULL i IS NOT NULL) obsługują wartości null w komendach SQL INSERT
i SELECT
. Aby na przykład zlokalizować wszystkie rekordy w tabeli, w której cLastName nie ma wartości null, użyj następującego polecenia:
SELECT cLastName FROM mytable WHERE cLastName IS NOT NULL
Aby zlokalizować wartości null, użyj klauzuli IS NULL.
Funkcje agregujące SQL ignorują wartości null
Funkcja agregacji to funkcja, która wykonuje operację liczbową, taką jak dodawanie, minimum, maksimum lub średnia dla grupy (agregacja) wartości. Przykłady funkcji agregujących to MAX()
, MIN()
i SUM()
.
Na przykład polecenie SQL SELECT
może wykorzystywać funkcje agregujące do pobierania wartości liczbowych z tabel. Na przykład następujące SELECT
polecenie zwraca maksymalną wartość z pola o nazwie nYTDSales
:
SELECT MAX(nYTDSales) from mytable
Każda funkcja agregacji SQL wykonywana w polu zawierającym .NULL.
wartości ignoruje .NULL.
wartości, zwracając wynik, który traktuje wartości null tak, jakby nie istnieją (nie są częścią agregacji).
Aby uzyskać więcej informacji na temat .NULL.
wartości i funkcji opisanych powyżej, wyszukaj tematy w pliku Pomocy programu Visual FoxPro.