現在、フィールドに '\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」文字を個別化できるようにするために、フィールドを文字列ではなくバイト配列に変換することは可能ですか?