[FIND]

文字列が他の文字列内で最初に現れる位置を検索します。 FIND では大文字と小文字は区別されます。

構文

FIND(<find_text>, <within_text>[, [<start_num>][, <NotFoundValue>]])  

パラメーター

用語 定義
find_text 検索する文字列。 within_text 内の先頭文字と一致させる場合は、空文字列 ("") を使用します。
within_text 検索文字列を含む文字列。
start_num (省略可能) 検索を開始する文字。省略した場合、start_num = 1 となります。 within_text 内の先頭文字は、文字番号 1 です。
NotFoundValue (省略可能だが、強く推奨されます) 操作で一致する部分文字列が見つからない場合に返される値。通常は 0、-1、または BLANK() です。 指定しない場合は、エラーが返されます。

戻り値

検索する文字列の開始位置を示す数値。

解説

  • Microsoft Excel には、1 バイト文字セット (SBCS) 言語と 2 バイト文字セット (DBCS) 言語に対応するため複数のバージョンの FIND 関数がありますが、DAX では Unicode が使用され、各文字が同じようにカウントされます。そのため、文字の種類によって異なるバージョンを使用する必要はありません。

  • この関数は、計算列または行レベルのセキュリティ (RLS) ルールで使用される場合、DirectQuery モードでの使用はサポートされません。

  • FIND では、ワイルドカードはサポートされません。 ワイルドカードを使用するには、SEARCH を使用します。

次の DAX クエリでは、リセラーの名前が含まれる文字列から、"Bike" の最初の文字の位置が検索されます。 見つからない場合は、Blank が返されます。

なお、FIND では大文字と小文字が区別されます。 この例では、"bike" を <find_text> 引数に使用した場合は、結果は返されません。 大文字と小文字を区別しない場合は、SEARCH を使用します。

この記事の例は、Adventure Works DW 2020 Power BI Desktop のサンプル モデルで使用できます。 モデルを取得するには、「DAX サンプル モデル」を参照してください。

EVALUATE
CALCULATETABLE (
    ADDCOLUMNS (
        TOPN ( 10, SUMMARIZE('Reseller', [Reseller], [Business Type])),
        "Position of Bike", FIND ( "Bike", 'Reseller'[Reseller], 1, BLANK () )
    ),
    'Reseller'[Business Type] IN { "Specialty Bike Shop", "Value Added Reseller", "Warehouse"}
)

次が返されます。

Reseller Business Type Position of Bike
Volume Bike Sellers Warehouse 8
Mass Market Bikes Value Added Reseller 13
Twin Cycles Value Added Reseller
Rich Department Store Warehouse
Rental Gallery Specialty Bike Shop
Budget Toy Store Warehouse
Global Sports Outlet Warehouse
Online Bike Catalog Warehouse 8
Helmets and Cycles Value Added Reseller
Jumbo Bikes Specialty Bike Shop 7

SEARCH
テキスト関数