使用表达式确定字符串是否以字母开头

dru*_*512 1 sql-server ssis

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

模式应始终遵循:AA0000000

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

例子:

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

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

bil*_*nkc 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
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

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