SQL 服务器:LEN 给出了意外的结果

SQL Server: LEN gives unexpected results

我在 SQL Server 2008 和 SSIS (BIDS) 中工作。我有一个数据流任务,将平面文件传送到目标 table。目标 table 中的所有列都是 varchar(255).

我正在查询目的地 table,我注意到一些奇怪的行为。

比如某列中,有几个值为'0.00'。当我针对此列 运行 LEN 时,我得到的是 7,而不是 4。为什么会这样? SSIS 是否已知会在数据流任务中引入 non-ASCII 个字符?

平面文件的一个例子是:

A|stuff||x||061|-117.96|0.00

我的 table 架构示例:

我发现我做错了什么。当我第一次创建我的 SSIS 包时,我正在操作的文本文件将 {LF} 作为它们的行分隔符。但是,我正在操作的当前文本文件将 {CR}{LF} 作为行分隔符。因此,在导入时,SQL 在每个 table 的最后一列中保留了 {CR} 字符。在所有连接管理器上将 SSIS 包行分隔符更改为 {CR}{LF} 解决了该问题。