Ampscript BuildRowsetFromString() 在单个项目上失败

Ampscript BuildRowsetFromString() fails on single item

我接到了一项使用 Ampscript 的 ExactTarget 任务。在这里边走边学。请参阅下面的代码片段:

%%[
    Var @testString, @testOutput
    Set @testString = Qwerty
    Set @testOutput = BuildRowsetFromString(@testString,"~")
]%%

TestOutput:%%= v(@testOutput) =%%

如果 testString 包含 ~,代码有效,但当字符串中没有 ~ 字符时,输出为空白。这是设计正确的吗?我是否需要添加条件来检查是否存在 ~ 字符?

这是预期的行为。 BuildRowsetFromString() 函数在显示时不会 return 任何值,您将需要使用 Row()Field() 来提取值。

使用你的例子:

%%[
    Var @testString, @testOutput

    Set @testString = "Qwerty"
    Set @testOutput = BuildRowsetFromString(@testString,"~")

]%%

RowCount: %%=RowCount(@testOutput)=%%
TestOutput: %%=v(@testOutput)=%%

RowCount() 函数 return 的值为 1,本质上是说它知道其中至少有一个 'row'。要显示该值,您需要用 Field()Row():

包装该值
TestOutput: %%=Field(Row(@testOutput,1),1)=%%

如果您想显示字符串中的其他值,假设您传递的是 "Qwerty~Second~Third",您需要更改 Row() 处的数字函数或执行循环。

参考资料

Using Loops

BuildRowsetFromString() Function