OMIT( ) 関数

指定した 1 つ以上の部分文字列が削除された文字列を返します。

構文

OMIT(文字列1, 文字列2 <,大文字と小文字の区別>)

パラメーター

名前 種類 説明
文字列1 文字 1 つ以上の部分文字列を削除する対象となる文字列。
文字列2 文字

削除対象となる 1 つ以上の部分文字列。

  • 複数の部分文字列を区切るにはカンマを使用します。
  • その部分文字列が削除したい部分文字列の一部である場合のみ、カンマの後にスペースを使用します。
  • 部分文字列のいずれかに二重引用符文字が出現している場合は、文字列2パラメーターの前後を二重引用符でなく一重引用符で囲む必要があります(' ')。
  • カンマを削除するには、部分文字列のリストの最後に単一のカンマを置き、その直後に閉じる引用符を続けます(下記の最後の例を参照してください)。
大文字と小文字の区別

省略可能

論理

部分文字列で大文字と小文字が区別されるようにするには T を指定し、大文字と小文字の違いが無視されるようにするには F を指定します。

大文字と小文字の区別を省略した場合は、デフォルト値の T が使用されます。

出力

文字。

基本的な例

リテラル文字の入力値

"Intercity Couriers" が返されます。

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

"Inter-city Couriers" が返されます。

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

メモ

この戻り値と上記の例の戻り値との間のレーベンシュタイン距離は 1 です。一般的要素が削除されていない場合、2 つの例の間の距離は 8 となり、値があいまい重複としての検出を逃れる可能性があります。

フィールドへの入力値

"Corporation" および "Inc." などの一般的な要素を含む業者名フィールドのすべての値を返します。削除済み:

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

"Corporation" および "Inc." などの一般的な要素を含む業者名フィールドのすべての値を返します。削除済み:

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

メモ

上記の 2 つの例は同じ結果を返しますが、2 番目の例の構文の方がより効率的です。

Vendor_Name フィールドのすべての値から "Corporation" や "Corp" などの要素とすべてのカンマを削除した値が返されます。

OMIT(Vendor_Name," Corporation, Corp,")

備考

OMIT( ) により、部分文字列ごとに削除を行うことができます。

OMIT( ) 関数は、文字列から 1 つ以上の部分文字列を削除します。これは、CLEAN( )、EXCLUDE( )、INCLUDE( )、および REMOVE( ) などの関数とは異なり、文字単位ではなく、部分文字列単位で文字列と一致し、削除を行います。サブ文字列の削除により、文字列から特定の単語、略語、あるいは繰り返し現れる文字の並びを、文字列の残り部分に影響を与えることなく削除することができます。

あいまい比較用のヘルパー関数

OMIT( ) 関数は、"Corporation" や "Inc." などの総称要素を除去することによって、LEVDIST( ) 関数や ISFUZZYDUP( ) 関数、あるいは FUZZYDUP または FUZZYJOIN コマンドの有効性を高めることができます。。総称要素の除去により、これらの関数およびコマンドで実行される文字列比較は、意味のある違いが発生する可能性のある文字列の部分だけに集中されます。

部分文字列間の順序が結果に及ぼす影響

削除する部分文字列を複数指定する場合、文字列2 にそれらを列挙した順序が出力結果に影響を与えることがあります。

OMIT( ) 関数の処理時、最初の部分文字列がそれを含んでいるすべての値から削除され、次に 2 番目の部分文字列がそれを含んでいるすべての値から削除され、というように続きます。もし、ある部分文字列が別の文字列の一部を構成している場合、たとえば "Corp" と "Corporation" という場合には、先に短い部分文字列を削除すると、長い部分文字列を含んでいる値も変えてしまい("Corporation" が "oration" になります)、長い部分文字列が検出されなくなります。

このような状況を回避するために、長い部分文字列を、それに含まれるあらゆる短い部分文字列よりも先に指定してください。例:

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

まず特殊文字を削除するようにしてください。

句読点、特殊文字、およびスペースなどの単一文字の部分文字列を指定して、文字列内の一般的な構成要素をさらに減らすことができます。最初にピリオドや空白などの単一文字を削除する方が効率的かもしれません。これにより、その後指定する必要のある部分文字列の変化形の数が減ります。上記の 3 番目と 4 番目の例を比較してください。どちらも同じ結果を返しますが、4 番目の例の方がより効率的です。

空白やスペースの扱い

部分文字列内の空白やスペースは他の文字と同様に扱われます。サブ文字列の一部として削除する各ペースを明示的に指定する必要があります。たとえば、空白をまったく入れないでアンパサンドを指定した場合("&")、"Ricoh Sales & Service" は "Ricoh Sales Service" になります。空白を入れた場合(" & ")、"Ricoh Sales & Service" は "Ricoh SalesService" になります。

サブ文字列の一部ではない空白を指定する場合、サブ文字列は検索されません。たとえば、アンパサンドと空白(" & ")を指定する場合、"Ricoh Sales&Service" は変更されません。

カンマを使って複数の部分文字列を区切る場合、カンマの後にスペースを入れるのは、そうすることで、削除したい実際の部分文字列と一致するときのみです。

空白を扱う手法の 1 つは、最初にフィールドからすべての空白を削除することです。これは、ほかのどの部分文字列を指定するより先に、空白を単一文字の部分文字列として指定することで行えます。

OMIT( ) を使用した結果を見直す

OMIT( ) を使って演算フィールドを作成した後、そのフィールドの内容を見直して、文字列の意味のある部分を不注意に削除していないかを確認してください。たとえば、"Co" を削除すると、"Company" に対してよく用いられる略語(Co)が取り除かれますが、それはまた、"Coca-Cola" の 2 か所から文字 "Co" を除くことにもなります。

ACL のスクリプト作成ガイド 14.1