PowerBuilder中對NULL的徹底解釋

    NULL代表不知道或者沒有定義,和空值完全不同。例如,在數據庫中某字段取值爲NULL,代表用戶還沒有處理這個字段的數據,有待於處理;而如果該字段取值爲空,代表這個字段的數據用戶做了處理,這個字段的取值是清楚的。
當變量定義後,變量沒有取值,應該爲NULL,但實際上不是這樣。PowerBuilder爲每種類型的變量都規定了默認值,當剛剛定義了某類型的變量時,該變量的取值爲這種類型變量的默認值。如integer類型的默認值爲0,string類型的變量的默認值爲“”。
大多數情況下,NULL和數據庫打交道時才經常使用。當某個取值爲NULL的字段取值讀入到變量時,該變量被置爲NULL。也可以通過函數將變量的值置爲NULL,但是不能直接把NULL賦值給變量。任何類型的變量都可以被賦值爲NULL,NULL是一個非常特殊的值。函數用法是:
SetNull(變量名)
執行成功時返回1,否則返回-1。
例如:
String ls_name//此時變量ls_name的取值爲“”
SetNull(ls_name)//ls_name變量此時爲NULL
判斷某變量的取值是否爲NULL時,使用函數IsNull(變量名),不能使用“=”來判斷。例如“if ls_name=NULL then…”是不正確的,“if IsNull(ls_name) then …”是正確的。當某布爾表達式的取值爲NULL時,PowerScript處理爲False。例如,下面的語句都不能執行beep(1)語句:
Int     li_Nbr
// Set li_Nbr to NULL.  
SetNull(Nbr)  
If li_Nbr =1 Then Beep(1)  
If li_Nbr <> 1 Then Beep(1)
If Not (li_Nbr = 1) Then Beep(1)
正因爲NULL的特殊性,在條件語句中判斷時要備加小心。例如,下面的語句就能正確執行ELSE中的信息顯示:
Int li_count
SetNull(li_count)  
If li_count = 1 Then
       MessageBox("Value", "li_count= 1")
Else
      MessageBox("Value", "li_count= NULL")
End If
但是,如果把上面的語句做語法上的等價修改,就什麼顯示信息也沒有:
Int li_count
SetNull(lli_count)  
If li_count = 1 Then MessageBox("Value", "li_count= 1")
If li_count <> 1 Then MessageBox("Value", "li_count= NULL")
當字符串的聯接運算中有NULL時,取值也爲NULL。例如:
String ls_name,ls_temp

SetNull(ls_temp)
Ls_name = "張三"
Ls_name = ls_name + ls_temp
If IsNull(ls_name) Then MessageBox("提示","空值!")
函數MessageBox()經常用來顯示一定的信息,和用戶交互時經常使用。如果要顯示的信息是NULL時,提示窗口不會顯示。例如,下面語句執行時,沒有任何的信息提示窗口:
String ls_name,ls_temp

SetNull(ls_temp)
Ls_name = "張三"
If IsNull(ls_name) Then MessageBox("提示",ls_name + ls_temp)
發佈了29 篇原創文章 · 獲贊 7 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章