FINDMULTI( ) 函数

返回一个逻辑值,表明是否在特定域中或在整个记录的任何位置存在一个或多个指定字符串中的任一字符串。

语法

FINDMULTI({搜索范围|RECORD}, 字符串_1 <,...n>)

参数

名称 类型 描述
搜索范围 | RECORD

字符

要在其中进行搜索的域或变量。

指定关键字 RECORD 可搜索整个记录,包括记录的任何未定义部分。

您还可以通过连接域名称指定一个域列表:

Field_1+Field_2+Field_3
字符串1 <,...n>

字符

要搜索的一个或多个字符串。请用逗号分隔多个搜索字符串:

FINDMULTI(RECORD, "Joa", "Jim", "Joh")

该搜索不区分大小写。

输出

逻辑。如果找到指定的任一字符串值,则返回 T (真);否则,返回 F(假)。

示例

基本示例

搜索整个记录

对于在任何域、跨任何域边界以及在记录的任何未定义部分中包含 "New York" 或 "Chicago" 的所有记录,返回 T。否则,返回 F:

FINDMULTI(RECORD, "New York", "Chicago")

搜索单个域

对于在城市域中包含 "New York" 或 "Chicago" 的所有记录,返回 T。否则,返回 F:

FINDMULTI(城市, "New York", "Chicago")

对于在城市域中包含字符串 "Ne" 或 "Chi" 的所有记录,返回 T。否则,返回 F:

FINDMULTI(城市, "Ne", "Chi")

对于在城市域中包含带有一个或多个前导空格的 "New York" 或 "Chicago" 的所有记录,返回 T。否则,返回 F:

FINDMULTI(城市, " New York", " Chicago")

对于其描述域中的值匹配或包含 v_search_term 变量中的值的所有记录,返回 T;否则,返回 F:

FINDMULTI(描述, v_search_term_1, v_search_term_2, v_search_term_3)

搜索多个域

对于在城市城市_2域中包含字符串 "New York" 或 "Chicago" 的所有记录,返回 T。否则,返回 F:

FINDMULTI(城市+城市_2, "New York", "Chicago")

对于在城市城市_2域中包含字符串 "New York" 或 "Chicago" 的所有记录,返回 T。否则,返回 F:

FINDMULTI(城市, "New York", "Chicago") OR FINDMULTI(城市_2, "New York", "Chicago")

与其他函数结合使用

对于其姓氏_1域中的值匹配或包含姓氏_2姓氏_3 域中的值的所有记录,返回 T。否则,返回 F:

FINDMULTI(姓氏_1, ALLTRIM(姓氏_2), ALLTRIM(姓氏_3))

备注

何时使用 FINDMULTI( )

使用 FINDMULTI( ) 函数可测试指定的任一字符串是否存在于某个域、两个或更多个域或整个记录中。

匹配原理

字符串值可以精确匹配,也可以包含在较长的字符串中。除非您在字符串值中包括一个或多个前导空格,否则域中的前导空格不影响搜索。

搜索整个记录

如果您指定 RECORD 而非 搜索字符串 域,则搜索整个记录,包括该记录的任何未定义部分。搜索整个记录时将忽略域边界,并且将域中的结尾空格视为字符。

说明

当您搜索整个记录时,将搜索物理记录。任何计算域或相关域都不会被搜索。

搜索域子集

如果您想要在表中的域的某个子集中搜索,则可以在搜索范围参数中连接两个或更多个域。例如,要同时在城市城市_2域中搜索字符串 “New York” 或 "Chicago":

FINDMULTI(城市+城市_2, "New York", "Chicago")

除非您使用 ALLTRIM( ) 函数删除空格,否则连接域被视为包括各个域中的前导空格和结尾空格的单个域。

您还可以构建一个表达式以分别搜索每个域:

FINDMULTI(城市, "New York", "Chicago") OR FINDMULTI(城市_2, "New York", "Chicago")

如果字符串值包括前导空格,则这两个方法的搜索结果可能不同。

区分大小写比较和精确字符比较

FINDMULTI( ) 函数不区分大小写,并且可同时查找 ASCII 及 EBCDIC 字符。该函数不受精确字符比较选项 (SET EXACT ON/OFF) 的影响。

在计算域中搜索

要在计算域中搜索,您必须在搜索范围中指定该域的名称。例如,如果供应商城市是一个隔离地址中的城市的计算域,则:

FINDMULTI(供应商城市, "New York", "Chicago")

在相关域中搜索

要在相关域中搜索,您必须在搜索范围值中指定该域的完全限定名称(即,表.域名称):

FINDMULTI(供应商.供应商城市, "New York", "Chicago")

搜索日期时间或数值数据

在指定 RECORD 时,可以使用 FINDMULTI( ) 函数在记录级别搜索日期时间或数值数据。日期时间或数值搜索不支持指定搜索范围域。

必须将数值或日期时间字符串值放在引号中,并且需要将其与源数据格式而不是视图中的格式精确匹配。

不支持使用 FINDMULTI( ) 函数在计算域或相关域中搜索日期时间或数值数据。

说明

不建议使用 FINDMULTI( ) 函数来搜索日期时间或数值数据,因为这很难成功。

ACL 脚本指南 14.1