首页 > 解决方案 > 案例测试是否存在子字符串并替换为空白

问题描述

我需要通过替换来清理一组公司名称:INC,LTD,LTD。, INC. , others,当它们是单个单词时有一个空格(在单词之前有一个空格,即 Incoming INC),而不是公司名称的字母部分,即 INComing Money。

我试过的逻辑:

case
when FINDSTRING([Trade Name]," INC",1) > 0 then REPLACE([Trade Name]," INC","")
when FINDSTRING([Trade Name]," LTD",1) > 0 then REPLACE([Trade Name]," LTD","")
ELSE [Trade Name]

我在派生列中尝试了 SSIS 表达式:

FINDSTRING( [Trade Name] ," INC",1) ? REPLACE([Trade Name]," INC","") : 
FINDSTRING([Trade Name]," LTD",1) ? REPLACE([Trade Name]," LTD",""):

收到的错误:

数据流任务 [派生列 [1]] 出错:尝试查找名为“A”的输入列失败,错误代码为 0xC0010009。在输入列集合中找不到指定的输入列。

标签: sql-serverssisexpressionetl

解决方案


在类似的情况下,使用脚本组件清理该列更容易,您可以简单地根据空格拆分列,然后重新连接不等于的部分INC,您可以使用以下方法来执行此操作,或者您可以RegEx.Replace()基于正则表达式替换值的简单使用方法:

string value = "";
string[] parts = Row.TradeName.Split(' ');

foreach(string str in parts){

    if(str != "INC"){

    value += " " + str;

    }

}

Row.outTradeName = value.TrimStart();

推荐阅读