sql - 如何在 SSIS 中使用 LIKE 运算符(或等效运算符)执行合并

标签 sql sql-server-2008 ssis bids

我一直在寻找这个答案,到目前为止,还没有找到解决方案。我正在 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/

相关文章:

java - 使用 jooq 进行 hstore 合并的重复键

sql-server - 尾随空格作为 SQL Server 2008 中的主键的 Varchar

ssis - 如何在导入数据之前简单地清除表格?

mysql - 试图获取独特的论坛帖子列表,但不起作用

php - 通过$_FILES变量可以实现SQL注入(inject)吗?

sql-server - 如何使用扩展事件功能停止 SQL Server 或采取基于事件的自定义操作

c# - 如何在sql查询中使用逗号分隔的动态字符串?

ssis - 为什么 SSIS 提示 "There is a partial row at the end of the file"?

mysql - SQL Server代理期间SSIS无法连接到数据库

sql - 在 SQL 中将简单的 XML 转换为表