【发布时间】:2016-04-22 15:41:27
【问题描述】:
我有一个行为异常的 SSIS 查找。在大多数情况下,它可以很好地匹配数据,但在许多情况下,当数据查看器显示数据匹配时,它不会提供匹配。真正奇怪的是,查找连接使用了没有 where 子句的 SQL 查询。如果我更改 SQL 查询以包含 where 子句,该子句仅返回与不匹配的行相似的行并重新运行它;然后数据匹配。
例如,如果 SQL 查询是:
Select ColumnA, ColumnB
From TableA
ColumnA 是我要查找匹配的列,ColumnB 是我要添加到数据流中的列。
查询提供这样的结果
AA, B
AC, D
BE, F
BG, H
(所有数据都是大写的,所以这不是问题)
我要匹配的输入列是 AC,但没有返回匹配项(它返回 AA 和 BG 的匹配项)。但是,如果我将查询更改为包含这样的 where 子句: where ColumnA like 'A%' (只返回两行)
然后我得到一个匹配。 有没有人以前见过这样的东西并修复过?
【问题讨论】:
-
您是要匹配相等的列还是包含某些值的列?添加两个表的清晰示例
-
我不能做样品;涉及专有和私人数据。我给出的例子说明了这个问题。来自源的列是 AC,它必须与提供 AC 的查询中的列相匹配。如果您以前从未见过这样的事情,那么您可能没有答案。
-
SELECT RTRIM(ColumnA) AS ColumnA, ColumnB并确保您已将 RTRIM 应用于 SourceA - 您现在得到匹配吗? -
您在 Lookup 中查询的表中有多少行?你在使用缓存吗?
-
如果不是大小写问题,那么可能是尾随空格。这些在 SQL 中被忽略,但在 SSIS 中很重要。
标签: sql-server ssis