【问题标题】:SSIS How to get part of a string by separator using Derived ColumnSSIS如何使用派生列通过分隔符获取字符串的一部分
【发布时间】:2013-09-18 15:11:14
【问题描述】:

我尝试编写一个 SSIS 表达式以在分隔符之前获取字符串的正确部分,然后将新字符串放入新列中。我在派生列中使用了 Substring 和 Findstring,但我遇到了问题。

Company
Virgin Altantic - F30008 
Google - F38115

我需要检索 F30008 和 F38115。

我用的表达方式:

(DT_STR,65,1252)(FINDSTRING(Company,"- ",1) != 0 ? (SUBSTRING(Company,1,FINDSTRING(Company,"-",1) + 2)) : Company)

从这个表达式我得到:

Company
Virgin Altantic - 
Google - 

【问题讨论】:

  • 一般来说,您还需要发布您尝试过的内容(findstring 和 substring 是的,但具体您使用了什么)以及您收到的确切错误消息是什么。

标签: ssis


【解决方案1】:

只需使用带有“-”分隔符的SSIS TOKEN,然后使用TRIM

【讨论】:

    【解决方案2】:

    数据:

    |                    COMPANY |
    |----------------------------|
    |   Virgin Altantic - F30008 |
    |            Google - F38115 |
    | Google youtube - F38115169 |
    

    派生列代码:

    NewColumn1

    SUBSTRING(Company,1,LEN(Company) - FINDSTRING(REVERSE(Company),"-",1) - 1)
    

    NewColumn2

    SUBSTRING(Company,LEN(Company) - FINDSTRING(REVERSE(Company),"-",1) + 3,FINDSTRING(REVERSE(Company),"-",1) - 2)
    

    结果:

    【讨论】:

      【解决方案3】:

      您遇到的问题是您想要字符串的结尾,而您当前的代码为您提供了字符串的开头。

      SUBSTRING 的文档指定了 3 个参数:表达式、起始位置和长度。 FINDSTRING 正在返回分隔符的位置。您正在做的是将开始位置指定为 1,即列中的第一个字符。

      取而代之的是,将分隔符的位置加上 2 个空格来说明分隔符本身和空格。长度将是LEN([Company]) - FINDSTRING([Company],"- ",1)

      在所有版本的 SSIS 中,我们还有 RIGHT,这是您也可以使用的 SUBSTRING 的专用版本。

      【讨论】:

      • 道歉,但我认为我不明白这一点。这就是你的意思 (DT_STR,65,1252)(FINDSTRING(Company,"- ",1) != 0 ? (SUBSTRING(Company,1,LEN([Company]) - FINDSTRING([Company],"-", 1)) : 公司)
      猜你喜欢
      • 2012-06-10
      • 2020-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-03
      • 1970-01-01
      相关资源
      最近更新 更多