SSIS FINDSTRING 是一个字符串函数,用于查找并返回子字符串在字符串或字符表达式中指定出现的位置(索引位置)。本文将解释如何使用 FINDSTRING 函数,并提供一个示例以及查找子字符串或字符位置的语法,如下所示。
FINDSTRING(<<Character_expression>>, <<String>>, <<Occurrence>>)
- Character_expression:原始字符串或将要进行搜索的列名。
- String:要在 Character_expression 中搜索的字符或子字符串。
- Occurrence:这是一个整数值,用于决定 FINDSTRING 函数应从第几次出现开始读取位置。
为了演示 SSIS FINDSTRING 函数,我们使用下面的 Employee 表,该表有 15 条记录。请参考 SSIS 中的 Union All 转换、派生列转换、内置函数 和 SQL Server 文章。

SSIS FINDSTRING 函数
对于这个 FINDSTRING 示例,添加一个数据流任务,然后双击它进入数据流区域。接下来,添加 OLE DB 源以从上述 SQL 数据库表中读取数据。请将 OLE DB 源连接到派生列转换,因为它有助于编写 FINDSTRING 表达式并创建新列。

接下来,双击它打开派生列转换编辑器。将 SSIS FINDSTRING 函数拖放到“表达式”下的行单元格中,并将 Character_expression 替换为字符串列名,String 替换为子字符串或字符,Occurrence 替换为整数。您可以手动删除整个 <<Character_expression>> 表达式,或者通过拖放列来自动替换它。
FINDSTRING( [Name] , " ", 1 )
FINDSTRING( [Name] , " ", 2 )
FINDSTRING( [Phone] , "-", 1 )

单击“确定”关闭编辑器窗口。拖放 Union All 转换并将派生列连接到它。接下来,右键单击连接节点并选择“启用数据查看器”。
请运行 SSIS FINDSTRING 函数包,以查看 Name 字段中空格的位置以及 Phone 字段中“ - ”的位置。
- Name1 – 显示 Name 字段中第一个空格出现的位置。
- Name2 – 显示 Name 字段中第二个空格出现的位置。
- Phone1 – 显示 Phone 字段中第一个“ - ”出现的位置。如果我将第二个参数更改为 2,FINDSTRING 函数将返回 8(而不是 4)。
