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( ) 函数来搜索日期时间或数值数据,因为这很难成功。