【问题标题】:Using SSIS Parameters in LIKE Query在 LIKE 查询中使用 SSIS 参数
【发布时间】:2016-07-25 22:45:41
【问题描述】:

我无法在 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 参数?

【问题讨论】:

  • 你必须使用 findstring 函数stackoverflow.com/questions/4739230/…
  • 试试 SELECT [TeamMembers] FROM tblTeams WHERE [TeamMembers] like 吗? + '%'
  • @ChintuS FINDSTRING 在这里不直接适用,因为我正在编写 SQL 查询,而不是表达式。一个很好的建议,谢谢。
  • @sandeeprawat 我没想到您的解决方案会因为单引号放置而起作用,但确实如此!如果您作为答案转发,我会接受。

标签: sql-server parameters ssis


【解决方案1】:

创建变量SQL_Select 输入字符串,并在此变量上定义表达式"SELECT [TeamMembers] FROM tblTeams WHERE [TeamMembers] LIKE '" + [User::TeamMemberName] + "%'"。在这里,我假设您使用了带有上述参数 A、B 或 C 的变量 TeamMemberName 类型字符串。
然后在 OLE DB 源组件上 - 设置 SQL command from variable ad 数据访问模式并在变量名下拉列表中选择 User::SQL_Select

【讨论】:

    【解决方案2】:

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

    IE SELECT [TeamMembers] FROM tblTeams WHERE [TeamMembers]like ? + '%'

    作为?会自动转换为适当的数据格式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-13
      • 1970-01-01
      • 1970-01-01
      • 2014-03-13
      • 2021-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多