AT( ) 関数

文字値における部分文字列の特定の出現の開始位置を示す数値を返します。

構文

AT(出現番号, 検索文字列, 検索されるテキスト)

パラメーター

名前 種類 説明
出現番号

数値

位置を返す検索文字列の出現箇所(インスタンス)

たとえば、検索文字列の最初の出現箇所の開始位置を返させる場合は、1 を指定します。

検索文字列

文字

検索されるテキスト内から検索する部分文字列。この値では大文字と小文字が区別されます。

検索文字列が二重引用符を含んでいる場合は、検索文字列の値を一重引用符で囲む必要があります。

AT(1,'"test"', Description)
検索されるテキスト 文字

検索される値。

テーブル内の複数のフィールドで検索したい場合は、検索されるテキスト パラメーターで 2 つ以上のフィールドを連結することができます。

AT(1,'"test"', Description+Summary)

出力

数値。検索文字列の指定された出現の開始バイト位置を返します。文字列が検出されなかった場合はゼロ値を返します。

基本的な例

出現箇所が見つかった場合

4 が返されます。

AT(1, "-", "604-669-4225")

8 が返されます。

AT(2, "-", "604-669-4225")

出現箇所が見つらなかった場合

この値には 3 番目のハイフンがないため、0 が返されます。

AT(3, "-", "604-669-4225")

この値には 4 番目の小文字の "a" がないので、0 が返されます。

AT(4, "a", "Alabama")

文字のグループ

5 が返されます。

AT(2, "iss", "Mississippi")

フィールド内の検索

Invoice_Number(請求書番号)フィールド内の各値における最初のハイフンのバイト位置が返されます。

AT(1, "-", Invoice_Number)

高度な例

2 つ目のハイフンが 10 番目のバイト位置より後に現れる請求書番号を見つける

AT( ) 関数を使って以下のようなフィルターを作成することにより、テーブル内の請求書番号の一貫性を分析することができます。請求書番号に 2 つ以上のハイフンが入っていて 2 つ目のハイフンが 10 バイト目の位置より後に現れる、すべてのレコードが、このフィルターにより抽出されます。

SET FILTER TO AT(2, "-", Invoice_Number) > 10

備考

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

この関数は、文字値における以下の開始位置を取得する場合に使用することができます。

  • 部分文字列の開始位置
  • 部分文字列の後続の出現箇所の開始位置

フィールド内に同じ部分文字列が複数回出現することを確認したいだけである場合は、OCCURS( ) 関数がより良い代替手段です。詳細については、OCCURS( ) 関数を参照してください。

出現番号が出現箇所の数より大きい場合に、値が返されます。

出現番号検索されるテキスト内における部分文字列の実際の出現数より大きい場合には、関数は部分文字列の出現を見つけられないので 0 を返します。

連結されたフィールドと戻り値

複数のフィールド内を検索した場合、見つかったインスタンスに対する戻り値は、指定したすべてのフィールドにおける検索文字列の開始位置になります。連結したフィールドは 1 つのフィールドのように扱われます。ただし、ALLTRIM( ) 関数を使用して個々のフィールドからスペースを除去しなければ、各フィールドの先頭と末尾のスペースを含むフィールドとなります。

たとえば、それぞれ幅が 8 バイトである 2 つのフィールドから文字列の最初の出現箇所を検索した場合に、その文字列が 2 番目のフィールドの先頭で見つかったときは、戻り値は 9 になります。

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