使用 Analytics 函数搜索和过滤

您可以使用 Analytics 函数对表中的数据执行强大且有效的搜索和过滤。

指南:使用函数搜索或过滤

域名

当您指定要在其中进行搜索的域名称时,它必须是表布局中的物理域名称,而不是表视图中的显示名称。

提示

要查看物理域名称,请在表视图中右键单击列标题并选择属性

引号 必须用“引号”将文本搜索术语围起来。
反引号 必须用`反引号`将日期时间搜索术语围起来。
日期时间格式
  • 日期时间搜索术语必须使用 YYYYMMDD 或 YYMMDD 格式。
  • 任何时间部分都必须使用 hhmmss 格式,并且带有单个空格、字母 ‘t’ 或字母 ‘T’ 前缀。 例如:`t183000`
  • 在日期或时间的各个部分之间,不要使用任何分隔符,如斜杠 (/) 或冒号 (:)。
相关域 要在相关域中搜索,您必须指定完全限定名称:表名称.域名称
函数规则

每个函数都具有控制它的工作方式(如受支持的数据类型以及是否区分大小写等)的特定规则。

有关控制 Analytics 搜索函数的规则的高级别比较,请参见Analytics 搜索函数比较。 要了解任何函数的详细信息,请单击下面的链接函数名称。

搜索类型

您可以使用函数搜索或过滤文本、数值或日期时间数据。 但是,您需要使用适合于您所搜索或过滤的数据类型的正确函数:

  • 函数支持的数据类型函数适合于处理特定数据类型,或者在某些情况下,它们可以处理一个以上的数据类型。

    例如,您可以将 ISBLANK( ) 函数用于文本数据(字符数据),但不能用于数值或日期时间数据。 您可以将 MATCH( ) 或 BETWEEN( ) 函数用于字符、数值或日期时间数据。

  • 数据的数据类型您需要注意您要搜索或过滤的数据的数据类型并且使用适合于该数据类型的函数。 数字和日期通常具有数值或日期时间数据类型。 但是,它们可能使用字符数据类型。

说明

您可以单击下面的任一函数名称,以了解有关该函数的详细信息,

文本搜索(字符数据类型)

搜索单个文本术语

使用: FIND( ) 函数

描述:限制最少的搜索函数。 不区分大小写。 除了搜索单个域或多个域以外,还可以用来搜索整个记录。

示例

结果

FIND("United Equipment")

隔离在其任何位置包含名称“United Equipment”的所有记录。

FIND("Equip")

隔离在其任何位置包含字符串“Equip”的所有记录。

FIND("United Equipment", 供应商名称)

隔离在“供应商名称”域中包含名称“United Equipment”的所有记录。

FIND("United Equipment", Vendor.Vendor_Name)

隔离在相关供应商表的“供应商名称”域中包含名称“United Equipment”的所有记录。

搜索空白文本值

使用: ISBLANK( ) 函数

描述:使您可以在字符域中搜索空白值。

示例

结果

ISBLANK(名字)

隔离所有具有空“名字”域的记录。

搜索多个文本术语

使用: FINDMULTI( ) 函数

描述:与 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(供应商地址, 员工地址)

隔离所有具有完全相同的供应商地址和员工地址的记录。

您可能需要使用附加函数来标准化供应商地址和员工地址的格式。

搜索特定字符或子串的一个或多个实例

使用: 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。

搜索几乎完全相同的文本值(模糊重复)

使用: ISFUZZYDUP( ) 函数

描述:使您可以搜索几乎完全相同的值(模糊重复)以及完全相同的值。 不区分大小写。

使用: LEVDIST( ) 函数

描述:类似于 ISFUZZYDUP( ),但默认情况下区分大小写。

示例

结果

ISFUZZYDUP(姓氏, "Braun", 2)

隔离在“姓氏”域中包含名称“Braun”或包含名称“Braun”的模糊重复项的所有记录。

您可以增大或减小在此示例中被设置为 2 的编辑距离(模糊度)。

LEVDIST(TRIM(姓氏), "Braun") < 3

隔离在“姓氏”域中包含名称“Braun”或包含名称“Braun”的模糊重复项的所有记录。

您可以增大或减小在此示例中被设置为 < 3 的编辑距离(模糊度)。

在表达式中包括 TRIM( ) 函数可从“姓氏”域中删除任何前导空格,从而确保只比较文本值。

搜索基本模式

使用: MAP( ) 函数

描述:使您可以使用通配符、字面量字符或两者的混合体进行搜索。

示例

结果

MAP(发票编号, "XX99999")

隔离其发票编号由两个字母和随后的五个数字组成或以此字母数字组合开头的所有记录。

MAP(发票编号, "AB12345")

隔离其发票编号恰好为 “AB12345” 或以 “AB12345” 开头的所有记录。

MAP(发票编号, "AB99999")

隔离其发票编号由 “AB” 和随后的五个数字组成或以此字母数字组合开头的所有记录。

NOT MAP(SSN, "999-99-9999")

隔离其 SSN 域不符合社会安全号标准格式的所有记录。

搜索更复杂的模式

使用: REGEXFIND( ) 函数

描述:最强大且最灵活的搜索函数。 使您可以使用能够将字面量字符和元字符组合在一起的正则表达式进行搜索。 与其他搜索函数相比,使用起来可能更加复杂。

示例

结果

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 个或更多个字母的所有记录。

数值搜索

搜索数字

使用: 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 域中具有不同金额的所有记录。

在某个范围中搜索数字

使用: BETWEEN( ) 函数

描述:使您可以搜索属于某个范围的数值类型值。

示例

结果

BETWEEN(发票金额, 1000, 5000)

隔离其发票金额为从 $1000 到 $5000(包括这两个金额)的所有记录。

在整个表中搜索一个数字

使用: FIND( ) 函数

描述:除了搜索单个域或多个域以外,还可以用来搜索整个记录。

使用: FINDMULTI( ) 函数

描述:与 FIND( ) 相同,但允许指定多个搜索术语。

说明

使用 FIND( )或 FINDMULTI( ) 函数搜索数值类型值可能很复杂。 这些函数在源数据文件 (.fil) 中搜索精确字符,而这些字符在表视图中的呈现方式可能不同。

如果搜索结果对您而言似乎不一致,请在表布局对话框中检查源数据。

示例

结果

FIND("154.00")

隔离在源数据文件中记录的任意位置包含精确字符 154.00 的所有记录。

日期时间搜索

搜索日期时间值

使用: MATCH( ) 函数

描述:一个多功能的搜索函数,使您可以同时为多个搜索术语搜索一个域,或者为同一个搜索术语搜索多个域。 还允许您查找两个域中的匹配值。

示例

结果

MATCH(Invoice_Date, `20170731`)

隔离其发票日期为 2017 年 7 月 31 日的所有记录。

MATCH(Invoice_Date, `20170731`, `20170831`, `20170930`)

隔离其发票日期为第三季度每个月最后一天的所有记录。

搜索空白或者无效的日期值

使用: VERIFY( ) 函数

描述:使您可以在日期域中搜索空白或者无效的值。

示例

结果

NOT VERIFY(Invoice_Date)

隔离所有在 Invoice_Date 字段中包含空白或者无效日期的记录。

在某个范围内搜索日期时间值

使用: BETWEEN( ) 函数

描述:使您可以搜索属于某个范围的日期时间值。

示例

结果

BETWEEN(发票日期, `20140930`, `20141030`)

隔离其发票日期为从 2014 年 9 月 30 日 到 2014 年 10 月 30 日(包括这两个日子)的所有记录。

NOT BETWEEN(发票日期, `20140930`, `20141030`)

隔离其发票日期不在 2014 年 9 月 30 日 到 2014 年 10 月 30 日之间的所有记录。

在整个表中搜索一个日期时间值

使用: FIND( ) 函数

描述:除了搜索单个域或多个域以外,还可以用来搜索整个记录。

使用: FINDMULTI( ) 函数

描述:与 FIND( ) 相同,但允许指定多个搜索术语。

说明

使用 FIND( ) 或 FINDMULTI( ) 函数搜索一个日期时间值可能很复杂。 这些函数在源数据文件 (.fil) 中搜索精确字符,而这些字符在表视图中的呈现方式可能不同。

如果搜索结果对您而言似乎不一致,请在表布局对话框中检查源数据。

示例

结果

FINDMULTI(RECORD, "31/07/2017", "31/08/2017")

隔离在源数据文件中记录的任意位置包含精确字符 31/07/201731/08/2017 的所有记录。

在使用 FIND( ) 或 FINDMULTI( ) 搜索日期时间值时,与日期时间格式(YYYYMMDD、YYMMDD、hhmmss、hhmm)有关的一般限制不适用。

Analytics 搜索函数比较

下面的表提供了 Analytics 搜索函数的高级比较。 当您在 Analytics 中构建搜索表达式时,了解控制每个函数的具体规则有何不同可能是有用的。

搜索时的数据类型

搜索位置(单个字段、多个字段、记录)

前导空格可搜索

区分大小写

部分匹配

多个搜索术语

受“精确字符比较”选项 (SET EXACT ON/OFF) 影响