2013-08-01 24 views
0

我明白在PB中,如果在變量級聯中有一個空值,那麼所有的變量都會返回一個空值。我試圖找出在串聯期間是否有處理空值的方法。如何在字符串連接中處理空值?

查看下面的例子,ls_element3返回一個空值,那麼肯定所有的變量都會返回一個空值,我想要發生的是返回ls_element1和ls_element2下的值。任何人有關於如何在字符串連接期間處理空值的想法?

String ls_message, 
ls_element1 = a, 
ls_element2 = b, 
ls_element3 = null 

ls_message = ls_element1 + ls_element2 + ls_element3 
+0

我不完全清楚你是什麼意思,所有的變量返回空值。據我所知,只有ls_message將爲空。我想你可以寫一個小函數(類似於TSQL IsNull),你可以檢查空值並返回空字符串。通過這種方式,結果不會爲空。 – DARKinVADER

回答

2

我可以想象兩種基本方法,雖然我確信還有其他幾種。

// insert between assignment and concatenation 
IF IsNull (ls_element1) THEN ls_element1 = "" 
IF IsNull (ls_element2) THEN ls_element2 = "" 
IF IsNull (ls_element3) THEN ls_element3 = "" 

//create a function that mimics the if() DataWindow function in PowerScript 
function string f_if (boolean ab_Condition, string as_TrueResult, string as_FalseResult) 
IF ab_Condition THEN 
    RETURN as_TrueResult 
ELSE 
    RETURN as_FalseResult 
END IF 

,改變你的連接來

ls_message = f_if (IsNull (ls_element1), "", ls_element1) + & 
    f_if (IsNull (ls_element2), "", ls_element2) + & 
    f_if (IsNull (ls_element3), "", ls_element3) 

祝你好運,

特里

0

您可以強制空字符串值空字符串通過t他string()功能和[general]格式。它將由一個空字符串替換空值:

string ls_a, ls_b, ls_c, ls_d 

ls_a = "foo" 
setnull(ls_b) 
ls_c = "bar" 

ls_d = string(ls_a, "[general]") + string(ls_b, "[general]") + string(ls_c, "[general]") 
//ls_d is "foobar" 

string(variable, '[general]')相當於isnull(variable, '')

但是,這不是一些漂亮的代碼,雖然...

0

您可以編寫一個函數nullisblank(s)。如果傳遞的值爲NULL,則返回空字符串。否則它返回值。這在DataWindows中特別有用。

0
if not isnull(ls_element1) then ls_message += ls_element1; 
if not isnull(ls_element2) then ls_message += ls_element2; 
if not isnull(ls_element3) then ls_message += ls_element3 

如果你有這樣的事情:

string a = '1'; 
string b = ''; 
string c = null; 

當你做出一個字符串女巫= A + B的結果將是1 但是,如果你犯了一個字符串= A + B + C或a + c它將= null null因爲空字符串eleminates他人的價值。