我需要一些帮助在SSIS Expression中构建一个条件语句,这将允许我过滤掉一个必须始终以两个字母字符开头的9位varchar字段。
模式应始终遵循:AA0000000
我的目标是让数据流达到条件拆分并将非法记录转储到转储文件中,以便以后进行质量检查。
示例:
我对其他人必须处理此过滤器的方法持开放态度。我的数据来自Excel文档,不幸的是在点击我的加载过程之前没有预先验证数据。
答案 0 :(得分:4)
将我的解决方案限制在表达式空间中,您正在寻找的工具是CODEPOINT。它返回它找到的第一个字符的整数值。
使用我方便的花花公子ASCII表,我需要在源列中的第一个和第二个字符上调用CodePoint
并测试值是否在A-Z的字符范围之间。
这将测试第一个字符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
我的经验法则是,当我的表情从屏幕上滚动时,我更喜欢将逻辑放入脚本组件中。或者我会将其分解为多个派生列组件,因为它使维护更容易。