FIND( ) 函数

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

说明

FIND( ) 函数和 FIND 命令 是两个具有重大区别的不同 Analytics 功能。

语法

FIND(字符串 <,要在其中进行搜索的域>)

参数

名称 类型 描述
字符串

字符

将要搜索的字符串。该搜索不区分大小写。
要在其中进行搜索的域

可选

字符

要在其中搜索的域或变量。如果将其省略,则搜索整个记录,包括该记录的任何未定义部分。

输出

逻辑。返回 T (正确的),前提是发现指定字符串值;反之则返回 F(错误的)。

示例

基本示例

搜索整个记录

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

FIND("New York")

搜索单个域

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

FIND("New York", 城市)

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

FIND("Ne", 城市)

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

FIND(" New York", 城市)

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

FIND(值搜索项, 说明)

搜索多个域

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

FIND("New York", 城市+城市_2)

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

FIND("New York", 城市) OR FIND("New York", 城市_2)

与其他函数结合使用

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

FIND(ALLTRIM(姓氏), 姓氏_2)

备注

何时使用 FIND( )

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

匹配原理

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

搜索整个记录

如果未指定可选的要在其中进行搜索的域,则搜索整个记录(包括该记录的任何未定义部分)。搜索整个记录时将忽略域边界,并且将域中的结尾空格视为字符。

说明

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

搜索域子集

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

FIND("New York", 城市+城市_2)

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

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

FIND("New York", 城市) OR FIND("New York", 城市_2)

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

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

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

在计算域中搜索

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

FIND("New York", 供应商城市)

在相关域中搜索

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

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

搜索日期时间或数值数据

可以使用 FIND( ) 函数在记录级别搜索日期时间或数值数据。日期时间或数值搜索不支持指定要在其中搜索的域

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

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

说明

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

ACL 脚本指南 14.1