我有一个每天从外部源生成的输入文件,所以我对它进行了小小的控制。 该文件将由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", "")
迄今为止,似乎没有人能为我工作,所以任何建议都会非常感激。
答案 0 :(得分:1)
调用REPLACE
功能时,请不要引用CHAR
或ASCII
功能的来电。如果您引用它们,那么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