You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SSIS 2022派生列中提取最后两个方括号间的字符串

在SSIS数据流中通过派生列转换提取错误列名

在SSIS数据流里提取错误列名一直是公认的难题。由于要求尽量减少脚本转换/组件,无法使用复杂脚本方案识别错误列,不过通过两行C#代码已能获取Data Viewer中显示的错误列描述(例如OLEDB_DEST - Load Raw Dimension.Inputs[OLE DB Destination Input].Columns[ProductID]),代码如下:

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
    // 获取错误描述
    Row.ErrorDescription = this.ComponentMetaData.GetErrorDescription(Row.ErrorCode);
    // 获取错误列标识字符串
    IDTSComponentMetaData130 componentMetaData = this.ComponentMetaData as IDTSComponentMetaData130;
    Row.ErrorColumnName = componentMetaData.GetIdentificationStringByID(Row.ErrorColumn);
}

现在需要通过派生列转换,从上述字符串中稳定提取最后一对方括号之间的列名(如示例中的ProductID),此前尝试使用SUBSTRING和FINDSTRING未成功,以下是可行的解决方案:

派生列表达式

结合REVERSE、FINDSTRING和SUBSTRING即可实现,核心思路是通过反转字符串简化“找最后一对方括号”的逻辑,具体表达式如下:

REVERSE(SUBSTRING(REVERSE([ErrorColumnName]), FINDSTRING(REVERSE([ErrorColumnName]), "[", 1) + 1, FINDSTRING(REVERSE([ErrorColumnName]), "]", 1) - FINDSTRING(REVERSE([ErrorColumnName]), "[", 1) - 1))

表达式逻辑说明:

  1. REVERSE([ErrorColumnName]):将错误列标识字符串反转,把原字符串末尾的方括号部分移到开头,便于定位
  2. FINDSTRING(REVERSE([ErrorColumnName]), "[", 1):找到反转后第一个[的位置,对应原字符串最后一个]的位置
  3. FINDSTRING(REVERSE([ErrorColumnName]), "]", 1):找到反转后第一个]的位置,对应原字符串最后一个[的位置
  4. SUBSTRING(...):从反转后的字符串中截取两个符号之间的内容,最后再反转回来,得到目标列名

内容的提问来源于stack exchange,提问作者libpekin1847

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 21:53:20