我无法找到在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参数?
答案 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]喜欢? +'%'
是的?以适当的数据格式自动转换。