1

我需要一些帮助在 SSIS 表达式中构建条件语句,这将允许我过滤掉必须始终以两个字母字符开头的 9 位 varchar 字段。

模式应始终遵循:AA0000000

我的目标是让数据流达到条件拆分并将非法记录转储到转储文件以供以后进行质量检查。

例子:

  • AQ1234567 <-- 法律
  • PA9876543 <-- 法律
  • RR1133456 <-- 法律
  • K12345G65 <-- 非法
  • 098874312 <-- 非法

我对任何人都必须处理此过滤器的其他方法持开放态度。我的数据是从 Excel 文档开始的,不幸的是,在我的加载过程之前没有对数据进行预验证。

4

1 回答 1

5

将我的解决方案限制为表达式空间,您正在寻找的工具是CODEPOINT。它返回它找到的第一个字符的整数值。有了我方便的ASCII表,我需要调用CodePoint源列中的第一个和第二个字符,并测试这些值是否在 AZ 的字符范围之间。

这是对第一个字符CODEPOINT(Src)的测试,这是对第二个字符的测试CODEPOINT(SUBSTRING(Src,2,1))

把这个逻辑放在一起会导致这个丑陋的表达

(CODEPOINT(SUBSTRING(Src,2,1)) >= 65 
    && CODEPOINT(SUBSTRING(Src,2,1)) < 91) 
&& (CODEPOINT(Src) >= 65 
    && CODEPOINT(Src) < 91) ? true : false

在此处输入图像描述

我的经验法则是,当我的表达式滚动离开屏幕时,我更喜欢将逻辑放入脚本组件中。那或者我会将它分解为多个派生列组件,因为它使维护更容易。

于 2013-10-07T17:52:32.813 回答