Ssis SSI删除派生列中的第一个字

Ssis SSI删除派生列中的第一个字,ssis,derived,Ssis,Derived,如果这个词 (xxxx)英国白人 已将(xxxx)复制到新字段,如何编写表达式以删除(xxxx)以保留英国白色 British White 我已经尝试过左右两边的修剪,但它只通过接缝来去除空格。选项1:在post中修复它 假设要从文件中使用SQL,只需将数据按原样放入表中,然后在最终表中修复它 UPDATE FinalTable SET Column = SUBSTRING(Column, CHARINDEX( ' ' , Column) + 1 , LEN( Column ) ) 专业人

如果这个词

(xxxx)英国白人

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

British White


我已经尝试过左右两边的修剪,但它只通过接缝来去除空格。

选项1:在post中修复它

假设要从文件中使用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,因此表达式只返回原始列

专业人士

  • 内存驱动
  • 封装在包中的所有业务逻辑
缺点

  • 不保存源代码
  • 必须在包裹外的某个地方记录,以便下一个人知道发生了什么

如何定义“第一个单词”?如果只有一个词呢?我们是否仅限于派生列?@billinkc No不限于派生列,但由于我最近刚刚使用它进行种族上传,因此继续下去似乎是合适的。关于定义第一个单词,这取决于括号中的代码是否被视为单词。总有比文字上更多的东西