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
4

5 回答 5

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)

祝你好运,

特里

于 2013-08-01T13:51:59.073 回答
0

这正是您需要的:http: //forum.powerbuilder.us/viewtopic.php?f=4 &t=5

于 2013-10-28T20:05:18.763 回答
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;

当你制作一个字符串时,witch is = a + b 结果将是 1 但是如果你制作一个字符串 = a + b + c 或 a + c 它将是 = null 因为 null 字符串消除了其他人的价值。

于 2013-12-02T15:40:05.577 回答
0

你可以写一个函数nullisblank(s)。如果传递的值为 NULL,则返回空字符串。否则返回值。这在 DataWindows 中特别有用。

于 2013-10-31T16:51:45.407 回答
0

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, '')

但这不是一些漂亮的代码......

于 2013-08-01T15:20:54.423 回答