【发布时间】:2014-03-05 19:22:34
【问题描述】:
我一直在寻找这个答案很长一段时间,到目前为止,还没有找到解决方案。我正在 SSIS 中创建数据流任务,我需要使用 LIKE 运算符、FINDSTRING 或 CONTAINS 等连接不同数据源上的 2 个表。
这是我的数据的样子:
表 1 :: 数据源 1
| PersonName | Address |
Josh LA, California US
Ted SF, California US
Beth NYC, New York US
Table2 :: 数据源 2
| StateID | StateName |
01 California
02 New York
我需要在 Table1 上加入 Table2,其中 Table1.Address LIKE '%' + Table2.StateName '%'。 我想要的最终结果是这样的:
| PersonName | StateID |
Josh 01
Ted 01
Beth 02
我在 SSIS 中执行此操作,因此 Table1 和 Table2 是使用 OLE DB 源组件收集的,现在我需要找到一种方法来对这两个表执行非精确合并。
- 我无法使用脚本组件
我尝试使用“查找转换”,其中 Table1 是查找的输入。然后转到->高级->“修改SQL语句”,我尝试了2件事没有奏效:
1)
select * from (select * from [dbo].[Table2]) [refTable]
where ? LIKE '%' + [refTable].[StateName] + '%'
2)
select * from (select * from [dbo].[Table2]) [refTable]
where FINDSTRING( ?, [refTable].[StateName], 1) > 0
有没有什么方法可以在不使用脚本组件的情况下实现我在 SSIS 中寻找的内容? 也许有一种方法可以使用模糊查找?如果是这样,我该如何配置?有没有高级的“合并加入”对象?
【问题讨论】:
-
你不能只创建一个存储过程并通过查询生成一个结果集吗?
-
@TMcKeown 这两个表在不同的数据源中。
标签: sql sql-server-2008 ssis bids