我在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 :(得分: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)
祝你好运,
特里
答案 1 :(得分: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, '')
但这不是一些漂亮的代码......
答案 2 :(得分:0)
答案 3 :(得分:0)
您可以编写一个函数nullisblank(s)
。如果传递的值为NULL,则返回空字符串。否则返回值。这在DataWindows中特别有用。
答案 4 :(得分: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 string会释放其他值。