OCCURS( ) 関数

部分文字列が指定された文字値内に現れる回数を数えて返します。

構文

OCCURS(文字列, 検索語)

パラメーター

名前 種類 説明
文字列

文字

検索される値。

テーブル内の複数のフィールド内の値を検索したい場合は、2 つ以上のフィールドを連結することができます。

OCCURS(First_Name+Last_Name,"John")
検索語

文字

検索対象となる値。検索は大文字と小文字を区別します。

出力

数値。

基本的な例

2 が返されます。

OCCURS("abc/abc/a","ab")

3 が返されます。

OCCURS("abc/abc/a","a")

Invoice_Number フィールド内の各値におけるハイフンの出現回数が返されます。

OCCURS(Invoice_Number, "-")

高度な例

ハイフンが 2 つ以上入っている請求書番号を見つける

テーブル内の Invoice_Number にハイフンが 1 つしか入ってはいけない場合は、OCCURS( ) 関数を使って、2 つ以上のハイフンが含まれる Invoice_Number を抽出するフィルターを作成します。

SET FILTER TO OCCURS(Invoice_Number, "-") > 1

あるフィールドの値の他フィールドへの出現箇所を見つける

あるフィールドの値の他フィールドへの出現箇所を見つけるには、OCCURS( ) を使用します。たとえば、Last_Name の値が Full_Name フィールドに出現しているレコードを抽出するフィルターを作成できます。

OCCURS(Full_Name, ALLTRIM(Last_Name)) = 1

式に ALLTRIM( ) 関数を追加すると、Last_Name フィールドの先頭と末尾のスペースがすべて取り除かれ、テキスト値のみが比較されるようになります。

大文字と小文字を区別する検索を実行する

FIND( ) 関数とは異なり、OCCURS( ) 関数は大文字と小文字を区別するため、大小文字を区別した検索を実行できます。

次の式は、Vendor_Name フィールドに大文字の "UNITED EQUIPMENT"という名前が入っているすべてのレコードを抽出します("United Equipment" の出現箇所は無視)。

SET FILTER TO OCCURS(UPPER(Vendor_Name), "UNITED EQUIPMENT") > 0

大文字と小文字の違いを無視して "United Equipment" のすべての出現箇所を見つけたい場合は、UPPER( ) 関数を使って検索フィールドの値を大文字に変換します。

OCCURS(Vendor_Name, "UNITED EQUIPMENT") > 0
ACL のスクリプト作成ガイド 14.1