我一直在寻找这个答案,到目前为止,还没有找到解决方案。我正在 SSIS 中创建数据流任务,我需要使用 LIKE 运算符、FINDSTRING 或 CONTAINS 等连接不同数据源上的 2 个表。
这是我的数据:
表 1::数据源 1
| PersonName | Address |
Josh LA, California US
Ted SF, California US
Beth NYC, New York US
表2::数据源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 中寻找的东西? 也许有一种方法可以使用模糊查找?如果是这样,我该如何配置?是否有高级的“合并连接”对象?
最佳答案
您编辑的查找 1) 走在正确的轨道上。我认为您只需要删除派生表,例如
从 [dbo].[Table2] 选择 *
在哪里 ? LIKE '%' + [StateName] + '%'
关于sql - 如何在 SSIS 中使用 LIKE 运算符(或等效运算符)执行合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22207201/