sql-server - 案例测试是否存在子字符串并替换为空白
问题描述
我需要通过替换来清理一组公司名称: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。在输入列集合中找不到指定的输入列。
解决方案
在类似的情况下,使用脚本组件清理该列更容易,您可以简单地根据空格拆分列,然后重新连接不等于的部分INC
,您可以使用以下方法来执行此操作,或者您可以RegEx.Replace()
基于正则表达式替换值的简单使用方法:
string value = "";
string[] parts = Row.TradeName.Split(' ');
foreach(string str in parts){
if(str != "INC"){
value += " " + str;
}
}
Row.outTradeName = value.TrimStart();