本文說明如何在 Visual FoxPro 命令和函式中使用 Null 數據值。
原始產品版本: Visual FoxPro
原始 KB 編號: 130307
摘要
Visual FoxPro 3.0 版支援 Null 數據值。 在 3.0 版之前的 FoxPro 版本不直接支援空值數據。 本文描述 Visual FoxPro 處理傳遞給命令或函數的 Null 值(表示為 .NULL.
)的一般規則。
其他相關資訊
當值遺失、不相關或未知時,請使用 Null 值 (.NULL.
) 值。 在舊版 FoxPro 中,未知或遺漏的值是以空格或零表示,這些值可能已被誤解。 使用 Visual FoxPro,您現在可以將 Null 值儲存在欄位中。
請務必注意,Visual FoxPro 中的 Null 值 (.NULL.
) 與空白、空白或零值不同。 Null 代表沒有值,因此 Null 永遠不等於、大於或小於另一個值、Null 或非 Null。 Visual FoxPro 對 Null 值的支援符合 ANSI 標準,並影響到產品中任何使用到值和運算式的區域。
空值的一般規則
以下是傳遞至 Visual FoxPro 命令或函式之 Null 值的一般規則:
當傳遞 Null 時,命令會產生錯誤。
接受 Null 值的函式會傳回
.NULL.
結果。提供空值時,預期數值的函式會產生錯誤。
ISBLANK()
、ISDIGIT()
、ISLOWER()
、ISUPPER()
、ISALPHA()
和EMPTY()
當傳入 Null 值時,每個都會傳回 false (.F.)。ISNULL()
傳遞 Null 值時會傳回 true (.T.)。命令
INSERT
SQL 和 SQL 會透過 IS NULL 和SELECT
IS NOT NULL 子句處理 Null 值。SQL 聚合函數,例如
MAX()
、MIN()
和SUM()
會忽略匯總中的所有 Null 值。如果所有提供的值都是 Null 值,則 Visual FoxPro 聚合函數會傳播
.NULL.
,否則會忽略任何 Null 值。
本文的其餘部分提供這些一般規則的詳細資訊和範例。
當傳遞 Null 時,命令會產生錯誤
Visual FoxPro 命令是會導致動作的語句。 命令的範例包括 USE
、 BROWSE
與 DELETE
。 例如,USE
命令會為以下代碼返回錯誤:
STORE .NULL. TO nWorkArea
USE mytable IN (nWorkArea)
當命令的 USE
IN 子句預期接收數值或字母值時,若傳遞 .NULL.
,便會產生錯誤數據表編號無效。
NVL()
函式可以用來移除不支援或不相關計算或作業中的 Null 值。
STORE .NULL. TO nWorkArea
USE mytable IN NVL(nWorkArea,0)
這會在第一個可用的 workarea 中開啟 mytable。 如需有關NVL()
函式的詳細資訊,請參閱說明文件或 Visual FoxPro 文件。
接受 Null 值的函式會傳回 .NULL.。 因此
Visual FoxPro 函式是執行特定工作的例程,並採用零或多個自變數。 函式的範例包括 ISBLANK()
、 UPPER()
與 SUBSTR()
。 大部分的 Visual FoxPro 函式都允許以自變數的形式傳遞 Null 值,而不會產生錯誤,但 .NULL.
會從函式傳回 。 換句話說,當您將 Null 值傳遞至函式時,結果一律為 Null。 這也是在數學方程式中處理空值的方式。 例如,將 null 值加到 500 等於 null,而 null 值乘以零等於 null(而不是零)。
下列範例程式代碼會傳回.NULL.
:
cLastName = "Johnson"
nBegin = 5
nExtract = .NULL.
?SUBSTR(cLastName,nBegin,nExtract)
此規則的例外狀況是ISBLANK()
、ISDIGIT()
、ISLOWER()
、ISUPPER()
、ISALPHA()
和EMPTY()
函式—每個函式都會傳回.F.
值。 函式 ISNULL()
會傳 .T.
回值。
INSERT SQL 和 SELECT SQL 會使用新的子句來處理 Null 值
兩個新子句(IS NULL 和 IS NOT NULL)處理 INSERT
和 SELECT
SQL 命令中的 null 值。 例如,若要在 cLastName 不是 Null 的數據表中找出所有記錄,請使用下列命令:
SELECT cLastName FROM mytable WHERE cLastName IS NOT NULL
若要找出 Null 值,請使用 IS NULL 子句。
SQL 聚合函數忽略 Null 值
聚合函數是一個函式,它在一組(匯總)數值上執行數值運算,例如加法、最小值、最大值或平均值。 聚合函數的範例包括 MAX()
、 MIN()
和 SUM()
。
SELECT
例如,SQL 命令可以使用聚合函數從數據表擷取數值。 例如,下列 SELECT
命令會從名為 nYTDSales
的欄位傳回最大值:
SELECT MAX(nYTDSales) from mytable
在包含 .NULL.
值的欄位上執行的任何 SQL 聚合函數都會忽略 .NULL.
值,並傳回將 Null 值視為不存在的結果(不是匯總的一部分)。
如需有關.NULL.
值和上述函式的詳細資訊,請在 Visual FoxPro 說明檔案中搜尋相關主題。