在LIKE查询中使用SSIS参数

时间:2016-07-25 22:45:41

标签: sql-server parameters ssis

我无法找到在SSIS SQL Server OLEDB源组件中使用LIKE子句中的参数的正确语法。对于一个简单的例子,考虑以下单列表" tblTeams",将团队和团队成员列为单个字符串(我知道这是愚蠢的):

╔═══════════════╗
║ TeamMembers   ║
╠═══════════════╣
║ A - Joe       ║
║ A - Melissa   ║
║ B - Frank     ║
║ C - Angela    ║
║ A - Luis      ║
║ C - Ashley    ║
║ B - Sam       ║
╚═══════════════╝

我想运行一个for循环,导出每个团队的成员文件。循环有一个团队名称数组的输入变量:" A"," B"," C"等我想要使用该变量作为OLE DB源中的参数来选择团队成员:

SELECT  [TeamMembers]
FROM    tblTeams
WHERE   [TeamMembers] LIKE '?%';  --where ? is param = "A", "B", or "C"

但是,此处的语法将参数占位符视为问号字符串。移动占位符会破坏LIKE子句。是否可以在LIKE中使用SSIS参数?

2 个答案:

答案 0 :(得分:2)

创建变量 SQL_Select 类型String,并在此变量上定义表达式"SELECT [TeamMembers] FROM tblTeams WHERE [TeamMembers] LIKE '" + [User::TeamMemberName] + "%'"。在这里,我假设你使用了一个变量 TeamMemberName 类型的字符串,带有前面提到的参数A,B或C. 然后在OLE DB Source组件上 - 从变量 ad数据访问模式设置 SQL命令,并在变量名称下拉列表中选择 User :: SQL_Select

答案 1 :(得分:1)

我们可以使用吗?并将其映射到字符串数据类型。

IE        SELECT [TeamMembers] FROM tblTeams WHERE [TeamMembers]喜欢 +'%'

是的?以适当的数据格式自动转换。