2

我目前正在开发一个在字段中包含“\0”字符的数据库。

例如字段

Category CHAR(4)

有时具有值 '\0\0\0\0'(4 个零字符),有时具有值 ''(4 个空白字符)

我想使用一个脚本组件来区分所有有这个问题的字段。我编写了以下脚本,但它不起作用,因为 C# 将 '\0\0\0\0' 转换为空字符串。

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
    Type rowType = Row.GetType();

    foreach (IDTSInputColumn100 column in ComponentMetaData.InputCollection[0].InputColumnCollection)
    {
        PropertyInfo columnValue = rowType.GetProperty(column.Name.Replace("_", ""));
        Object obj = columnValue.GetValue(Row, null);
        if (obj is string)
        {
            string s = (string)obj;
            StringBuilder sb = new StringBuilder();
            foreach (char c in s)
            {
                if (c < ' ')
                {
                    sb.Append(' ');
                }
                else
                    sb.Append(c);
            }
            columnValue.SetValue(Row, sb.ToString(), null);
        }
    }
}

是否可以将字段转换为字节数组而不是字符串,以便能够区分 '\0' 字符?

4

2 回答 2

0

考虑将 char(4) 转换为二进制表示(使用数据转换组件),然后从那里操作各个元素。如果可能,请将其转换为您的源查询,以便它在进入管道之前已经是二进制的。

于 2011-08-12T08:02:05.823 回答
0

您需要在脚本组件中执行此操作吗?您不能使用派生列任务并使用子字符串来提取每个列值吗?您也可以使用 Trim 删除任何空格。

于 2010-11-22T16:25:08.007 回答