如何在SSIS中使用Derived Column函数编写ID拆分表达式?
SSIS 派生列拆分合并字段操作方法
现有合并字段格式为CountryCodeCustomerId,用+作为分隔符,可通过以下两个派生列表达式完成拆分:
1. 派生列1:提取CountryCode
表达式如下,将[原合并字段名]替换为你实际的数据源字段名即可:
LEFT([原合并字段名], FINDSTRING([原合并字段名], "+", 1) - 1)
逻辑说明:
- 用
FINDSTRING函数定位第一个+符号的位置 - 用
LEFT函数截取+符号之前的所有字符,即为国家代码
2. 派生列2:提取CustomerID
表达式如下:
SUBSTRING([原合并字段名], FINDSTRING([原合并字段名], "+", 1) + 1, LEN([原合并字段名]) - FINDSTRING([原合并字段名], "+", 1))
逻辑说明:
- 定位
+符号的位置后,从+的下一个字符开始截取 - 截取长度为字段总长度减去
+符号的位置,即可拿到+之后的客户ID内容
异常兼容优化(可选)
如果存在部分字段值不含+的场景,可加上判断逻辑避免表达式报错,示例如下:
// 兼容异常的CountryCode表达式,无分隔符时返回空值 FINDSTRING([原合并字段名], "+", 1) > 1 ? LEFT([原合并字段名], FINDSTRING([原合并字段名], "+", 1) - 1) : NULL(DT_WSTR, 50)
如果需要将提取结果转为数值类型,可在外层包裹类型转换逻辑,示例:
// 转为4字节整数的CountryCode (DT_I4)LEFT([原合并字段名], FINDSTRING([原合并字段名], "+", 1) - 1)
内容的提问来源于stack exchange,提问作者Eloise Amabile
相关产品推荐
相关产品推荐

