【问题标题】:SSIS - Derived Column - Substring/Charindex - Case when statementSSIS - 派生列 - 子字符串/字符索引 - 语句时的情况
【发布时间】:2017-05-03 16:27:07
【问题描述】:

我有这个 SQL 代码:

Select [Name] = case when CHARINDEX(''.'', [Name])>0 
                            then LEFT([Name],CHARINDEX(''.'', [Name])-1)
                        else [Name] end,
        [System] = case when reverse(SUBSTRING(REVERSE( System),1,CHARINDEX('':'', REVERSE(System)))) like '':'' 
                            then (  System + ''\'')
                        else    System end

我正在创建我的 SSIS 工作流,以便使用 SSIS 构建我的 ETL。为了创建上面的转换,我使用了派生列对象。 对于第一个语句,我试试这个:

ISNULL(SUBSTRING([Name],1,FINDSTRING([Name],".",1) - 1)) ? [Name] : SUBSTRING([Name],1,FINDSTRING([Name],".",1) - 1)

但它给了我错误...

如何进行这两种转换?

谢谢!

【问题讨论】:

  • 您遇到的错误是什么?您在“名称”列中获得什么类型的值?
  • 它没有给我任何结果... ;(

标签: sql-server ssis etl derived-column


【解决方案1】:
  1. 创建两个变量,如 Name (String) 和 t (Int32)。
  2. 使用两个表达任务

  1. EXPR_Set_Flag_For_Dot: @[User::t] = (FINDSTRING(@[User::Name], ".", 1) == 0 ? 0 : 1 )
  2. EXPR_Get_SubString:FINDSTRING( @[User::Name] ,".",1) == 0 ? @[User::Name] : SUBSTRING( @[User::Name] ,1,FINDSTRING( @[User::Name] ,".",1) - @[User::t] )

注意:在您的表达式中,您在子字符串中使用 -1,当名称中没有点 (.) 时,表达式将抛出错误。 FindString 将给出 0,因此不允许在外部 SubString 中使用 0-1。第一个表达式已经检查了这一点,并在没有点时将 @[User::t] 分配为 0,因此 0-0 不会出错。

【讨论】:

【解决方案2】:

你可以使用Expression Task来实现这个

  • 对于[Name] 表达式,您可以使用以下内容

    @[User::Name] = FINDSTRING( @[User::Name] ,".",1) == 0 ?  @[User::Name] : LEFT(SUBSTRING( @[User::Name] ,1,FINDSTRING( @[User::Name] ,".",1) ), LEN(SUBSTRING(@[User::Name] ,1,FINDSTRING( @[User::Name] ,".",1))) -1)
    

SUBSTRING 不允许从长度中减去 -1,您可以使用 LEFT 来实现这一点

  • 对于[System] 表达式,您可以使用以下内容

    @[User::System] = REVERSE(SUBSTRING(REVERSE(@[User::System]),1,FINDSTRING( REVERSE(@[User::System]),":",1))) == ":"  ? @[User::System] + "\\"    : @[User::System]
    

【讨论】:

  • @PedroAlves 乐于提供帮助。这是一个有用的问题。我投了赞成票。祝你好运
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-01
  • 2021-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多