我目前正在更新一个已经存在的 SSIS 包。当前包从我们的 IT 部门提供的 Excel 电子表格中提取数据。它列出了计算机的机器名称并将其计算为许可证报告。
我目前让 Job(派生列)从机器名称的第一部分去除 M(移动)或 D(桌面),以便它只返回用户名,这是我需要的报告。
MBRUBAKERBR => BRUBAKERBR
但是,我们的 IT 部门刚刚实施了 Windows 7,并采用了新的命名约定。现在有一个 76A、B、C 或 D 被添加到所有更新的机器的末尾。如果机器尚未更新,则它保留旧的命名约定(见上图)。
还有一些机器必须保留在 XP 上,它们的名称已更新为在它们的末尾有 X3A、B、C 或 D。
MBRUBAKERBR76A or DBRUBAKERX3C
我需要删除名称的最后一部分,以便从中获取用户名以进行报告。
问题是我不能使用 LEFT、RIGHT、LTRIM 或 RTRIM 表达式,因为某些计算机名称前面只会有 M 或 D(因为它们尚未升级)。
我能做些什么来删除这些字符而不重建这个包?
更新:我真的很想更新删除 M 和 D 的现有表达式。这是我正在使用的表达式。
SUBSTRING(Name,2,50)
这是在我的 SSIS 包的派生列中。
至于样本数据,这里是它的样子。
| Name |
| MBrubakerBR76A |
| MBROCKSKX3A |
| DGOLDBERGZA |
| MWILLIAMSEL |
| DEASTST76C |
| DCUSICKEVX3D |
这就是我希望它返回的内容。
| Name |
| BRUBAKERBR |
| BROCKSK |
| GOLDBERGZA |
| WILLIAMSEL |
| EASTST |
| CUSICKEV |
如果您需要更多信息或示例,请告诉我。