SSIS删除派生列中的第一个单词

时间:2014-03-06 14:25:33

标签: ssis derived

如果单词

(xxxx) British White

已将(xxxx)复制到新字段,如何编写表达式以删除(xxxx)以离开英国白?

British White

我已经尝试了左右两侧的修剪,但它只是接缝以移除空间。

1 个答案:

答案 0 :(得分:1)

选项1:在帖子中修复

假设您要从文件转到SQL,只需将数据按原样暂存,然后将其修复到最终表中。

UPDATE 
FinalTable
SET
Column = SUBSTRING(Column, CHARINDEX( ' ' , Column) + 1 , LEN( Column ) ) 

赞成

  • 保留源,以防您以后想要做一些与之不同的事情。 (这是一个巨大的职业选手似乎很容易掩饰。)
  • 对于其他人来说,SQL通常更容易维护(更多的人可以使用它),并且可以封装在更多地方(存储过程,托管代码等)。

缺点

  • 无论如何,可能只是将UPDATE语句粘贴在SSIS包中。
  • IO驱动,如果性能问题。

选项2:派生列

派生列语法:

RIGHT(Column,LEN(Column) - FINDSTRING(Column," ",1))

FINDSTRING函数中的1表示使用第一次出现。如果没有空格,则返回0,因此表达式只返回原始列。

赞成

  • 存储器驱动。
  • 封装在包中的所有业务逻辑。

缺点

  • 不保留来源。
  • 必须在包装外的某处记录,以便下一个人知道发生了什么。