FINDMULTI( ) 関数

指定された 1 つまたは複数の文字列が、特定のフィールド中、またはレコード全体のどこかに存在するかどうか示す論理値を返します。

構文

FINDMULTI({検索対象 | RECORD}, 文字列1 <,...n>)

パラメーター

名前 種類 説明
検索対象 | RECORD

文字

検索場所となるフィールドまたは変数。

未定義部分もすべて含めたレコードの全体を検索するには、キーワード、RECORD を指定します。

また、複数のフィールド名を連結したフィールド リストを指定することもできます。

Field_1+Field_2+Field_3
文字列1 <,...n>

文字

検索する 1 つまたは複数の文字列。複数の検索文字列を指定する場合は、カンマで区切ります。

FINDMULTI(RECORD, "Joa", "Jim", "Joh")

検索は大文字と小文字を区別しません。

出力

論理。指定された文字列の値のいずれかが見つかった場合は T(True)、そうでない場合は F(False)を返します。

基本的な例

レコード全体を検索する

次の例では、特定のフィールド、複数のフィールド、または未定義部分に "New York" または "Chicago" を含んでいるすべてのレコードに対し、'T' が返されます。それ以外のレコードに対しては 'F' が返されます。

FINDMULTI(RECORD, "New York", "Chicago")

単一のフィールド内の検索

次の例では、City フィールドの値が "New York" または "Chicago" であるすべてのレコードに対し、'T' が返されます。それ以外のレコードに対しては 'F' が返されます。

FINDMULTI(City, "New York", "Chicago")

次の例では、City フィールドの値が文字列 "Ne" または "Chi" であるすべてのレコードに対し、'T' が返されます。それ以外のレコードに対しては 'F' が返されます。

FINDMULTI(City, "Ne", "Chi")

次の例では、City フィールドの値が、"New York" または "Chicago" の前に 1 つ以上のスペースが付加された文字列であるすべてのレコードに対し、'T' が返されます。それ以外のレコードに対しては 'F' が返されます。

FINDMULTI(City, " New York", " Chicago")

次の例では、v_search_term 変数のいずれかの値と完全一致または部分一致する値を Description フィールドに持つすべてのレコードに対し、'T' が返されます。それ以外のレコードに対しては 'F' が返されます。

FINDMULTI(Description, v_search_term_1, v_search_term_2, v_search_term_3)

複数のフィールド内の検索

次の例では、City フィールドか City_2 フィールドのどちらかの値が文字列 "New York" または "Chicago" であるすべてのレコードに対し、'T' が返されます。それ以外のレコードに対しては 'F' が返されます。

FINDMULTI(City+City_2, "New York", "Chicago")

次の例では、City フィールドか City_2 フィールドのどちらかの値が文字列 "New York" または "Chicago" であるすべてのレコードに対し、'T' が返されます。それ以外のレコードに対しては 'F' が返されます。

FINDMULTI(City, "New York", "Chicago") または FINDMULTI(City_2, "New York", "Chicago")

他の関数との組み合わせ

次の例では、Last_Name_1 フィールドの値が Last_Name_2 または Last_Name_3 フィールドの値と完全一致または部分一致するすべてのレコードに対し、'T' が返されます。それ以外のレコードに対しては 'F' が返されます。

FINDMULTI(Last_Name_1, ALLTRIM(Last_Name_2), ALLTRIM(Last_Name_3))

備考

FINDMULTI( ) の使用に適する場面

FINDMULTI( ) 関数は、指定された文字列のいずれかが特定のフィールド、2 つ以上のフィールドのいずれか、またはレコード内のいずれかのフィールドに存在するかどうかを調べる場合に使用できます。

文字列が一致する仕組み

文字列の値は、正確に一致することもあれば、長い文字列の中に含まれることもあります。フィールド内の先頭スペースは、文字列値の先頭に 1 つ以上のスペースを入れない限り、検索には影響しません。

レコード全体を検索する

検索対象フィールド パラメーターの代わりに RECORD を指定した場合には、レコードは、未定義部分もすべて含め、全体が検索されます。レコード全体が検索される場合には、フィールドの境界は無視され、フィールドの末尾のスペースは文字として扱われます。

メモ

レコード全体を検索する場合は、物理レコードが検索されます。演算フィールドおよび関連フィールドは検索されません。

フィールドのサブセットを検索する

テーブル内のフィールドのサブセット内を検索したい場合は、検索対象パラメーターの中で 2 つ以上のフィールドを連結することができます。たとえば、City フィールドと City_2 フィールドの両方で文字列 "New York" または "Chicago" を検索するには、次の関数を使用します。

FINDMULTI(City+City_2, "New York", "Chicago")

連結したフィールドは 1 つのフィールドのように扱われます。ただし、ALLTRIM( ) 関数を使用して個々のフィールドからスペースを除去しなければ、各フィールドの先頭と末尾のスペースを含むフィールドとなります。

また、各フィールド内を別々に検索する式を作成することもできます。

FINDMULTI(City, "New York", "Chicago") または FINDMULTI(City_2, "New York", "Chicago")

文字列の値に先頭スペースが含まれている場合、この 2 つの手法の検索結果は異なる場合があります。

大文字と小文字の区別と正確な文字比較

FINDMULTI( ) 関数は大文字と小文字を区別せず、ASCII 文字と EBCDIC 文字の両方を検索します。この関数は、[正確な文字比較を行う]オプション(SET EXACT ON/OFF)の影響を受けません。

演算フィールド内を検索する

演算フィールド内を検索するには、検索対象にその演算フィールドの名前を指定する必要があります。たとえば、Vendor_City が住所から市区町村を抽出する演算フィールドの場合は、次のように指定します。

FINDMULTI(Vendor_City, "New York", "Chicago")

関連フィールド内を検索する

関連付けられたフィールド内を検索するには、検索対象の値としてフィールドの完全修飾名(つまり、<テーブル>.<フィールド名>)を指定する必要があります。

FINDMULTI(Vendor.Vendor_City, "New York", "Chicago")

日付時刻データまたは数値データを検索する

レコード レベルで日付時刻データまたは数値データを検索するには、FINDMULTI( ) 関数を RECORD とともに使用します。日付時刻または数値の検索では、検索対象フィールドの指定はサポートされていません。

数値または日付時刻の文字列値は引用符で囲む必要があり、ビューにおける書式ではなくソース データの書式と完全に一致する必要があります。

FINDMULTI( ) 関数を使用して演算フィールドや関連フィールド内で日付時刻データや数値データを検索することはできません。

メモ

FINDMULTI( ) 関数は、日付時刻データや数値データをあまりうまく検索できないため、お勧めしません。

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