【问题标题】:SSIS Derived Column Character cleaning errorSSIS派生列字符清理错误
【发布时间】:2014-04-08 19:30:43
【问题描述】:

我有表A,需要得到表B所示的结果。

Table A

S.no  Name
1     xy rz Jr
2     yz re Sr
3     yr, rq, Sr.


Table B 

S.no Name
1    xy, rz, Jr.
2    yz, re, Sr.
3    yr, rq, Sr.

我最初尝试删除特殊字符,然后在后期合并,但我无法以所需的输出格式排列它们

【问题讨论】:

  • 什么是“特殊字符”?
  • 喜欢删除 , 和 .来自表 A 并概括所有数据

标签: sql sql-server-2008 ssis


【解决方案1】:

这是我的解决方案:

1- 尝试对列应用转换以清除特殊字符(例如 '.'、','):

REPLACE(
  REPLACE( @[User::val3_]
    ,","
    ,"")
  ,"."
  ,"")

2- 然后您可以应用此代码来转换您的列:

    @[User::val]+"------"+
(LEFT(@[User::val],2)+", ")
+
(LEFT(
  TRIM(
    REPLACE(@[User::val]
                      ,(LEFT(@[User::val],2))
                      ,"") )
  ,2)+", ")
+
(LEFT(
  TRIM(
    REPLACE(TRIM( REPLACE(@[User::val],LEFT(@[User::val],2),"") )
            ,(LEFT(
                TRIM(REPLACE(@[User::val],(LEFT(@[User::val],2)),"") )
                ,2))
            ,"") )
,2)+".")

希望对你有所帮助。

祝你好运

【讨论】:

  • 嗨,珍妮,您应该在 2“派生列任务”中实现此代码,在派生列任务上应用第一个代码来转换您的特殊列(从特殊字符中清除它),然后在第二个派生列任务使用第二部分的代码对已从特殊字符中清除的列应用第二个转换。祝你好运:)
  • 我有点困惑派生列怎么会有 User::val ?
  • 我使用了一个变量来进行测试,但是您必须将@[User::val] 替换为您在数据流中的列名:)
  • 太好了 :) 非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
相关资源
最近更新 更多