删除' NUL'从文本文件导入SSIS中的字符

时间:2017-02-26 03:41:34

标签: sql-server ssis

我有一个每天从外部源生成的输入文件,所以我对它进行了小小的控制。 该文件将由SSIS读取,然后插入到SQL Server 2012数据库中。我已经开始讨论一个特定的问题。

问题中的这一行如下所示:

"|"James"|"Done"|""|""|""|"11548"|" "|""|""|""|""|""|""|""|""|""|"

第7个字段中的值实际上不是空格,而是“NUL'字符ASCII(0),我似乎无法 用SSIS删除它。

我使用派生列转换来替换null。整个字符串命名为" DataColumn"。到目前为止,我已在表达式构建器中尝试了以下内容。

1) Replace(DataColumn, "CHAR(0)", "")
2) Replace(DataColumn, "CHAR(0)", "\"\"")
3) Replace(DataColumn, "ASCII(0), "")
4) Replace(DataColumn, " ", "")
5) Replace(DataColumn, "\x000", "")

此外,还尝试了以下建议:

Replace(DataColumn, "0x0", "")
Replace(DataColumn, "\x0000", "")

迄今为止,似乎没有人能为我工作,所以任何建议都会非常感激。

1 个答案:

答案 0 :(得分:1)

调用REPLACE功能时,请不要引用CHARASCII功能的来电。如果您引用它们,那么REPLACE正在查找值为CHAR(0)的文字字符串。

此示例中删除了一个NULL字符

declare @str varchar(100) = 'Hello>' + char(0) + '<'
declare @fixed varchar(100) = replace(@str, char(0), '')

select @str, len(@str), @fixed, len(@fixed)

旁注:ASCII函数返回一个字符的数字codepint,因此你不知道你在此之后的所在,因为你知道你正在寻找一个空字符。 0