OMIT( ) 函数

返回一个或多个指定子串被删除的字符串。

语法

OMIT(字符串1字符串2 <,区分大小写>)

参数

名称 类型 描述
字符串1 字符 要从中删除一个或多个子串的字符串。
字符串2 字符

要删除的一个或多个子串。

  • 使用逗号来分隔多个子串。
  • 仅当逗号是您想要删除的子串的一部分时,才应该在逗号后面使用一个空格。
  • 如果双引号字符出现在任何子串中,请将整个 string2 参数放在单引号 (' ') 而不是双引号中。
  • 要省略逗号,请在子串列表的最后位置放置单个逗号,并在其之后紧接着放置一个关闭引号(请参见下面的示例)。
区分大小写

可选

逻辑

指定 T 可使子串区分大小写,指定 F 则忽略大小写。

如果省略 case_sensitive,则使用默认值 T。

输出

字符。

示例

基本示例

字面量字符输入

返回 "Intercity Couriers":

OMIT("Intercity Couriers Corporation", " Corporation, Corp.")

返回 "Inter-city Couriers":

OMIT("Inter-city Couriers Corp.", " Corporation, Corp.")

说明

前两个示例中的返回值之间的编辑距离是 1。如果未删除通用元素,则这两个示例之间的编辑距离是 8,这样可能会使这些值避开模糊重复检测。

域输入

返回 Vendor_Name 域中所有包含 "Corporation" 和 "Inc." 之类通用元素的值。删除后:

OMIT(Vendor_Name," Corporation, Corp., Corp, Inc., Inc, Ltd., Ltd")

返回 Vendor_Name 域中所有包含 "Corporation" 和 "Inc." 之类通用元素的值。删除后:

OMIT(Vendor_Name," ,.,Corporation,Corp,Inc,Ltd")

说明

前面的两个示例均返回了相同的结果,但第二个示例的语法更高效。

返回 Vendor_Name 域中的所有值,并且删除了其中的 "Corporation" 和 "Corp" 以及所有逗号。

OMIT(Vendor_Name," Corporation, Corp,")

备注

OMIT( ) 可以将子串作为一个单元予以删除。

OMIT( ) 函数可从字符串中删除一个或多个子串。它与 CLEAN( )、EXCLUDE( )、INCLUDE( ) 及 REMOVE( ) 等函数不同,因为它以子串而非逐个字符为根据来匹配和删除字符。删除子串使您可以从字符串中删除特定单词、缩写词或重复的字符序列,而不会影响该字符串的剩余部分。

一个模糊比较辅助函数

通过从域值中删除 "Corporation" 或 "Inc." 等通用元素,OMIT( ) 可提高 LEVDIST( ) 或ISFUZZYDUP( ) 函数以及 FUZZYDUP 或 FUZZYJOIN 命令的有效性。删除通用元素可使这些函数和命令所执行的字符串比较仅专注于可能出现有意义差异的字符串部分。

子串的顺序如何影响结果

如果您指定删除多个子串,则您在字符串2 中列出它们的顺序可能影响输出结果。

处理 OMIT( ) 函数时,首先把第一个子串从包含它的所有值中删除,然后把第二个子串从包含它的所有值中删除,以此类推。如果一个子串构成另一个子串的一部分 – 例如,"Corp" 和 "Corporation" – 首先删除较短的子串,同时更改包含较长子串的值("Corporation" 变为 "oration"),防止较长的子串被找到。

为避免此种情况,请把较长子串指定在其所包含的任何较短子串之前。例如:

OMIT(Vendor_Name," Corporation, Corp., Corp")

尝试首先删除特殊字符

您还可以指定单字符子串,如标点符号、特殊字符及空格,它们可进一步减少字符串中的通用元素。首先删除单个字符(例如,句号或空格)可能更有效,这样可减少您随后需指定的子串变体的数量。比较上述第三个和第四个示例。它们均返回了相同的结果,但第四个示例更有效。

处理空白或空格

子串中的空白或空格像任何其他字符一样处理。您必须显式指定您希望作为子串的一部分删除的每个空白。例如,如果您指定一个不带任何空白的 & 符号,则 "Ricoh Sales & Service" 将变为 "Ricoh Sales  Service"。如果您包括空白 (" & "),则 "Ricoh Sales & Service" 将变为 "Ricoh SalesService"。

如果您指定一个不是该子串一部分的空白,则会找不到该子串。例如,如果您指定一个带有空白的 & 符号 (" & "),则 "Ricoh Sales&Service" 保持不变。

当使用逗号分隔多个子串时,请仅当其与您想要删除的实际子串相对应时,才在逗号后面添加一个空格。

处理空白的一个方法是在指定任何其他子串之前,将空白指定为单字符子串,从而首先从域中删除所有空白。

审查使用 OMIT( ) 的结果

在使用 OMIT( ) 创建计算域后,检查域内容以确定您并未无意中省略有意义的子串组成部分。例如,省略 "Co" 会除去 "Company" 的通用缩写,但也会从 "Coca-Cola" 中的两个位置删除字母 "Co"。

ACL 脚本指南 14.1