高级搜索
Analytics 提供了一些选项,以便对表中的数据执行高级搜索。
要使用其中任一选项,您需要在表视图顶部的“过滤器”文本框中创建一个过滤器。该过滤器使用下面解释的 Analytics 函数之一。
例如,该过滤器使用 FINDMULTI( ) 函数隔离所有在其任意位置包含至少一个搜索术语的记录:
高级搜索指南
域名 |
当您指定要在其中进行搜索的域名称时,它必须是表布局中的物理域名称,而不是表视图中的显示名称。 提示 要查看物理域名称,请在表视图中右键单击列标题并选择属性。 |
---|---|
引号 | 必须用“引号”将文本搜索术语围起来。 |
反引号 | 必须用`反引号`将日期时间搜索术语围起来。 |
日期时间格式 |
|
相关域 | 要在相关域中搜索,您必须指定完全限定名称:表名称.域名称。 |
函数规则 |
每个函数都具有控制它的工作方式(如受支持的数据类型以及是否区分大小写等)的特定规则。 有关控制 Analytics 搜索函数的规则的高级别比较,请参见Analytics 搜索函数比较。要了解任何函数的详细信息,请单击下面的链接函数名称。 |
搜索类型
说明
您可以单击下面的任一函数名称,以了解有关该函数的详细信息,
提示
您可以将下面的任何示例直接复制并粘贴到“过滤器”文本框中,然后修改搜索术语和其他输入以匹配您的数据。
搜索单个文本术语
使用: FIND( ) 函数
描述:限制最少的搜索函数。不区分大小写。除了搜索单个域或多个域以外,还可以用来搜索整个记录。
示例 |
结果 |
---|---|
FIND("United Equipment") |
隔离在其任何位置包含名称“United Equipment”的所有记录。 |
FIND("Equip") |
隔离在其任何位置包含字符串“Equip”的所有记录。 |
FIND("United Equipment", 供应商名称) |
隔离在“供应商名称”域中包含名称“United Equipment”的所有记录。 |
FIND("United Equipment", Vendor.Vendor_Name) |
隔离在相关供应商表的“供应商名称”域中包含名称“United Equipment”的所有记录。 |
搜索多个文本术语
描述:与 FIND( ) 相同,但允许指定多个搜索术语。
示例 |
结果 |
---|---|
FINDMULTI(RECORD, "United Equipment", "Muller Corp.") |
隔离在其中任意位置包含名称 “United Equipment” 或 "Muller Corp" 的记录。 |
FINDMULTI(RECORD, "equip", "supp") |
隔离在其任意位置包含字符串“equip” 或 "supp" 的所有记录。 |
FINDMULTI(Vendor_Name, "United Equipment", "Muller Corp.") |
隔离在其中任意位置包含名称 “United Equipment” 或 "Muller Corp" 的记录。 |
FINDMULTI(Vendor.Vendor_Name, "United Equipment", "Muller Corp.") |
隔离在其中任意位置包含名称 “United Equipment” 或 "Muller Corp" 的记录。 |
使用 MATCH( ) 函数
描述:一个多功能的搜索函数,使您可以同时为多个搜索术语搜索一个域,或者为同一个搜索术语搜索多个域。还允许您查找两个域中的匹配值。
示例 |
结果 |
---|---|
MATCH(供应商城市, "Phoenix", "Austin", "Los Angeles") |
隔离其“供应商城市”域中的值与“Phoenix”、“Austin”或“LosAngeles”完全匹配或以这些字符串开头的所有记录。 |
NOT MATCH(供应商城市, "Phoenix", "Austin", "Los Angeles") |
隔离其“供应商城市”域中的值与“Phoenix”、“Austin”或“LosAngeles”不完全匹配且不以这些字符串开头的所有记录。 |
MATCH(产品代码, "A", "D", "F") |
隔离所有在“产品代码”域中具有产品代码 “A”、“D” 或 “F”,或以 “A”、“D” 或 “F” 开头的产品代码的记录。 |
MATCH(产品代码, "A", "D", "F") |
隔离所有在“产品代码”域中具有单字符产品代码 “A”、“D” 或 “F” 的记录。 精确字符比较选项必须为on。 |
说明 MATCH( ) 示例假定除非特别说明,精确字符比较选项被关闭。 |
搜索区分大小写的文本术语
使用 MATCH( ) 函数
描述:一个多功能的搜索函数,使您可以同时为多个搜索术语搜索一个域,或者为同一个搜索术语搜索多个域。还允许您查找两个域中的匹配值。
示例 |
结果 |
---|---|
MATCH(Last_Name, "SMITH") | 搜索其 Last_Name 域中的值为 "SMITH"(全部大写)的所有记录。 |
MATCH(Last_Name, "smith") | 搜索其 Last_Name 域中的值为 "smith"(全部小写)的所有记录。 |
MATCH(Last_Name, "Smith") | 搜索其 Last_Name 域中的值为 "Smith"(采用正确大小写)的所有记录。 |
在多个域中搜索文本术语
使用 MATCH( ) 函数
描述:一个多功能的搜索函数,使您可以同时为多个搜索术语搜索一个域,或者为同一个搜索术语搜索多个域。还允许您查找两个域中的匹配值。
示例 |
结果 |
---|---|
MATCH("Phoenix", 供应商城市, 城市, 城市_2) |
隔离其“供应商城市”、“城市”或“城市_2”域中的值至少有一个值与“Phoenix”完全匹配或以该字符串开头的所有记录。 |
搜索匹配的文本术语
使用 MATCH( ) 函数
描述:一个多功能的搜索函数,使您可以同时为多个搜索术语搜索一个域,或者为同一个搜索术语搜索多个域。还允许您查找两个域中的匹配值。
示例 |
结果 |
---|---|
MATCH(供应商地址, 员工地址) |
隔离所有具有完全相同的供应商地址和员工地址的记录。 您可能需要使用附加函数来标准化供应商地址和员工地址的格式。 |
搜索数字
使用 MATCH( ) 函数
描述:一个多功能的搜索函数,使您可以同时为多个搜索术语搜索一个域,或者为同一个搜索术语搜索多个域。还允许您查找两个域中的匹配值。
示例 |
结果 |
---|---|
MATCH(Invoice_Amount,154.00) |
隔离其发票金额为 $154.00 的所有记录。 |
MATCH(Invoice_Amount,154.00, 522.00) |
隔离其发票金额为 $154.00 或 $522.00 的所有记录。 |
NOT MATCH(库存成本值, 成本与数量之乘积) |
隔离在 Inventory_Value_at_Cost 域和计算得到的 Cost_x_Quantity 域中具有不同金额的所有记录。 |
搜索日期时间值
使用 MATCH( ) 函数
描述:一个多功能的搜索函数,使您可以同时为多个搜索术语搜索一个域,或者为同一个搜索术语搜索多个域。还允许您查找两个域中的匹配值。
示例 |
结果 |
---|---|
MATCH(Invoice_Date, `20170731`) |
隔离其发票日期为 2017 年 7 月 31 日的所有记录。 |
MATCH(Invoice_Date, `20170731`, `20170831`, `20170930`) |
隔离其发票日期为第三季度每个月最后一天的所有记录。 |
在整个表中搜索一个数字或日期时间值
使用: FIND( ) 函数
描述:限制最少的搜索函数。不区分大小写。除了搜索单个域或多个域以外,还可以用来搜索整个记录。
描述:与 FIND( ) 相同,但允许指定多个搜索术语。
说明
使用 FIND( ) 或 FINDMULTI( ) 函数搜索一个数字或日期时间值可能很复杂。这些函数在源数据文件 (.fil) 中搜索精确字符,而这些字符在表视图中的呈现方式可能不同。
如果搜索结果对您而言似乎不一致,请在表布局对话框中检查源数据。
示例 |
结果 |
---|---|
FIND("154.00") |
隔离在源数据文件中记录的任意位置包含精确字符 154.00 的所有记录。 |
FINDMULTI(RECORD, "31/07/2017", "31/08/2017") |
隔离在源数据文件中记录的任意位置包含精确字符 31/07/2017 或 31/08/2017 的所有记录。 在使用 FIND( ) 或 FINDMULTI( ) 搜索日期时间值时,与日期时间格式(YYYYMMDD、YYMMDD、hhmmss、hhmm)有关的一般限制不适用。 |
搜索特定字符或子串的一个或多个实例
使用: OCCURS( ) 函数
描述:使您可以在一个字符域中搜索某个子串的一个或多个实例。
示例 |
结果 |
---|---|
OCCURS(发票编号, "-") > 1 |
隔离在其发票编号中包含 2 个或更多个连字符的所有记录。 |
OCCURS(全名, ALLTRIM(姓氏))=1 |
隔离其“姓氏”域中的值出现在“全名”域中的所有记录。 在表达式中包括 ALLTRIM( ) 函数可从“姓氏”域中删除任何前导或结尾空格,从而确保只比较文本值。 |
OCCURS(供应商名称, "UNITED EQUIPMENT") > 0 |
隔离在“供应商名称”域中包含大写名称“UNITED EQUIPMENT”的所有记录。 与 FIND( ) 函数不同,OCCURS( ) 函数区分大小写。 |
搜索开始于特定字符位置的子串
使用:AT( ) 函数
描述:使您可以在字符域中搜索一个子串或该子串的后续实例,以及指定目标子串的起始字节位置。
示例 |
结果 |
---|---|
AT(2, "-", 发票编号) > 10 |
隔离在发票编号中包含 2 个或更多个连字符,并且第二个连字符出现在该字符串中第十个字符之后的所有记录。 |
在某个范围中搜索文本、日期时间或数字
使用: BETWEEN( ) 函数
描述:使您可以搜索属于某个范围的值。
示例 |
结果 |
---|---|
BETWEEN(姓氏, "C", "K") |
隔离其“姓氏”域中的值以从“C”到“K”(包括这两个字母)的字母之一开头的所有记录。 精确字符比较选项必须为 off。 |
BETWEEN(发票日期, `20140930`, `20141030`) |
隔离其发票日期为从 2014 年 9 月 30 日 到 2014 年 10 月 30 日(包括这两个日子)的所有记录。 |
NOT BETWEEN(发票日期, `20140930`, `20141030`) |
隔离其发票日期不在 2014 年 9 月 30 日 到 2014 年 10 月 30 日之间的所有记录。 |
BETWEEN(发票金额, 1000, 5000) |
隔离其发票金额为从 $1000 到 $5000(包括这两个金额)的所有记录。 |
搜索几乎完全相同的文本值(模糊重复)
使用: ISFUZZYDUP( ) 函数
描述:使您可以搜索几乎完全相同的值(模糊重复)以及完全相同的值。不区分大小写。
使用: LEVDIST( ) 函数
描述:类似于 ISFUZZYDUP( ),但默认情况下区分大小写。
示例 |
结果 |
---|---|
ISFUZZYDUP(姓氏, "Braun", 2) |
隔离在“姓氏”域中包含名称“Braun”或包含名称“Braun”的模糊重复项的所有记录。 您可以增大或减小在此示例中被设置为 2 的编辑距离(模糊度)。 |
LEVDIST(TRIM(姓氏), "Braun") < 3 |
隔离在“姓氏”域中包含名称“Braun”或包含名称“Braun”的模糊重复项的所有记录。 您可以增大或减小在此示例中被设置为 < 3 的编辑距离(模糊度)。 在表达式中包括 TRIM( ) 函数可从“姓氏”域中删除任何前导空格,从而确保只比较文本值。 |
搜索空白文本值
描述:使您可以在字符域中搜索空白值。
示例 |
结果 |
---|---|
ISBLANK(名字) |
隔离所有具有空“名字”域的记录。 |
搜索基本模式
使用:MAP( ) 函数
描述:使您可以使用通配符、字面量字符或两者的混合体进行搜索。
示例 |
结果 |
---|---|
MAP(发票编号, "XX99999") |
隔离其发票编号由两个字母和随后的五个数字组成或以此字母数字组合开头的所有记录。 |
MAP(发票编号, "AB12345") |
隔离其发票编号恰好为 “AB12345” 或以 “AB12345” 开头的所有记录。 |
MAP(发票编号, "AB99999") |
隔离其发票编号由 “AB” 和随后的五个数字组成或以此字母数字组合开头的所有记录。 |
NOT MAP(SSN, "999-99-9999") |
隔离其 SSN 域不符合社会安全号标准格式的所有记录。 |
搜索更复杂的模式
描述:最强大且最灵活的搜索函数。使您可以使用能够将字面量字符和元字符组合在一起的正则表达式进行搜索。与其他搜索函数相比,使用起来可能更加复杂。
示例 |
结果 |
---|---|
REGEXFIND(供应商城市, "Phoenix|Austin|Los Angeles") |
隔离其“供应商城市”域中的值包含“Phoenix”、“Austin”或“Los Angeles”的所有记录。 |
REGEXFIND(产品代码, "\b\d{3}-[a-zA-Z]{6}\b") |
隔离其产品代码以 3 个数字开头,后面跟一个连字符和 6 个字母的所有记录。 |
REGEXFIND(产品代码, "\b\d{3,}-[a-zA-Z]{6}") |
隔离其产品代码以 3 个或更多个数字开头,后面跟一个连字符和 6 个或更多个字母的所有记录。 |
Analytics 搜索函数比较
下表提供了 Analytics 搜索函数的高级别比较。当您在 Analytics 中构建搜索表达式时,了解控制每个函数的具体规则有何不同可能是有用的。
FIND( ) FINDMULTI( ) |
MATCH( ) |
MAP( ) |
OCCURS( ) |
AT( ) |
BETWEEN( ) |
REGEXFIND( ) |
ISFUZZYDUP( ) LEVDIST( ) |
|
---|---|---|---|---|---|---|---|---|
数据类型可搜索 | 字符 |
字符 日期时间 数值 |
字符 |
字符 日期时间 数值 |
字符 | |||
搜索范围 |
域 域 记录 |
域 域 |
域 |
域 域 |
域 | |||
前导空格可搜索 |
是 (可以在搜索字符串中选择性地匹配数据中的前导空格) |
是 (必须在搜索字符串中精确匹配数据中的前导空格) |
是 (可以在搜索字符串中选择性地匹配数据中的前导空格) |
是 (将数据或搜索字符串中的空格视为字符) |
||||
区分大小写 | 否 | 是 |
是 (字面量字符) 否 (通配符字符) |
是 |
否 (ISFUZZYDUP) 可选 (LEVDIST) |
|||
部分匹配 |
是 (搜索字符串可以出现在域中任何地方) |
是 (搜索字符串必须出现在域的开头,仅限字符) |
是 (搜索字符串必须与数据值等长,或更短一些) |
是 (搜索字符串可以出现在域中任何地方) |
是 (搜索字符串必须出现在域的开头,仅限字符) |
是 (搜索字符串可以出现在域中任何地方) |
是 | |
多个搜索术语 |
否 (FIND) 是 (FINDMULTI) |
是 | 否 | 是 | 否 | |||
受“精确字符比较”选项 (SET EXACT ON/OFF) 影响 |
否 | 是 | 否 | 是 | 否 |