AT( ) 函数

返回一个数字,该数字指定某个子串在字符值内的哪个位置开始出现。

语法

AT(出现次数, 搜索字符串, 受检文本)

参数

名称 类型 描述
occurance_num

数值

要返回其位置的 search_for_string 实例。

例如,指定 1 可返回 search_for_string 的第一个实例的开始位置。

搜索字符串

字符

要在 within_text 中搜索的子字符串。该值区分大小写。

如果 search_for_string 包含双引号,则需要把该值用单引号引起来:

AT(1,'"test"', Description)
受检文本 字符

在其中进行搜索的值。

如果您想要在表中的一个以上的域中搜索,则可以在 within_text 参数中连接两个或更多个域:

AT(1,'"test"', Description+Summary)

输出

数值。返回指定次数出现的搜索字符串值的起始字节位置;若未找到匹配项,则返回 0。

示例

基本示例

找到的实例

返回 4:

AT(1, "-", "604-669-4225")

返回 8:

AT(2, "-", "604-669-4225")

未找到的实例

返回 0,因为该值中没有第三个连字符:

AT(3, "-", "604-669-4225")

返回 0,因为该值中没有第四个小写字母 "a"。

AT(4, "a", "Alabama")

字符组

返回 5:

AT(2, "iss", "Mississippi")

搜索域

返回发票编号域内的每个值中的第一个连字符的字节位置:

AT(1, "-", 发票编号)

高级示例

查找第二个连字符出现在第十个字节位置之后的发票编号

您可以使用 AT( ) 函数创建一个如下所示的过滤器,以分析表中发票编号的一致性。此过滤器隔离所有满足下列条件的记录:其发票编号中包含两个或更多个连字符,并且第二个连字符出现在第十个字节位置之后:

SET FILTER TO AT(2, "-", 发票编号) > 10

备注

何时使用 AT( )

使用此函数可检索字符值内的以下开始位置:

  • 子字符串的开始位置
  • 该子字符串的随后实例的开始位置

如果您只想确认同一子串在某个域内多次出现,则 OCCURS( ) 函数是一个更好的替代函数。要了解更多信息,请参考OCCURS( ) 函数

occurrence_num 超过实例数时返回值

如果 occurrence_num 大于 within_text 中的实际子字符串实例数,则该函数会因为找不到该子字符串的相应实例而返回 0。

连接的域和返回值

当您在一个以上的域中搜索时,为该实例返回的值是您指定的所有域中的 search_for_string 的开始位置。除非您使用 ALLTRIM( ) 函数删除空格,否则连接域被视为包括各个域中的前导空格和结尾空格的单个域。

例如,如果您在两个宽度各为八个字符的域中搜索某个字符串的第一个实例,并且在第二个域的开头找到该字符串,则返回值是 9。

ACL 脚本指南 14.1