空数据中的SPLIT错误

时间:2018-05-14 18:07:44

标签: sql arrays syntax split crystal-reports

我遇到了从数据库中的某个字符用户字段中分割数据的问题。我们在该领域输入的数据示例如下:

abc-123-456; abc-789; 1234567; abcdefghi

我希望每次有数据时拆分数据; 我创建了4个公式并将它们放在报告标题中:

Split({STANDARD.CUSER6}, ";") [1]
Split({STANDARD.CUSER6}, ";") [2]
Split({STANDARD.CUSER6}, ";") [3]
Split({STANDARD.CUSER6}, ";") [4]

我也尝试了一个类似的公式:

if isnull({STANDARD.CUSER6}) then ""
else
split({STANDARD.CUSER6},";") [1]

当字符用户字段中有4个“组”数据时,这很有效,但是每当我收到的数据都没有或少于4个“<组”时

  

下标必须介于1和数组大小之间。

报告撰写的新内容,所以我不确定是否应该使用拆分公式或其他内容。

感谢所有反馈!

1 个答案:

答案 0 :(得分:0)

您可以使用UBound - 函数来获取最高的数组索引:

公式应如下所示:

第1组

If UBound(Split({STANDARD.CUSER6}, ";")) > 0 Then
    Split({STANDARD.CUSER6}, ";")[1]
Else
    ""

第2组

If UBound(Split({STANDARD.CUSER6}, ";")) > 1 Then
    Split({STANDARD.CUSER6}, ";")[2]
Else
    ""

第3组

If UBound(Split({STANDARD.CUSER6}, ";")) > 2 Then
    Split({STANDARD.CUSER6}, ";")[3]
Else
    ""

第4组

If UBound(Split({STANDARD.CUSER6}, ";")) > 3 Then
    Split({STANDARD.CUSER6}, ";")[4]
Else
    ""

注意:(在Crystal Reports中,数组索引从1开始而不是0。)