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} 解决了该问题。
我在 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} 解决了该问题。