今回はFIND関数を紹介していきたいと思う。
FIND関数とは?
FIND関数とは対象の文字列データの中にある特定の文字列の出現位置を返してくれる関数だ。
例えば、サンプルスーパーストアにおいて製品Idフィールドの各文字列における -(ハイフン)の位置をFIND関数で取得している例だ。
上記のようにFIND関数は対象の文字列の中から特定の文字列の位置を返してくれる。
そのため、指定した文字数を取得できるLEFT関数やMID関数などの他の文字列関数と組み合わせて使うことが実務上は多い。
単独で使うことは正直あまりない気がする。
FIND関数の使用方法
FIND関数の使用方法は下記の通りだ。
例えば、サンプルスーパーストアのオーダーIdフィールドの各Idにおいて、-(ハイフン)の位置を取得したいという場合は下記のように指定すると取得することができる
オーダーIdの各データ「JP-2018-~」の内、最初の-(ハイフン)の位置を取得出来ているのがお分かりいただけると思う。
開始位置は省略可能だ。
ただし、
「最初のハイフンではなく、2番目の -(ハイフン)の位置を取得したい!」という時は開始位置を指定すると下記のように2番目の-(ハイフン)の位置を取得することができる
FIND関数の注意点
FIND関数を使用する際に注意してほしい点が2点ある。
①開始位置を指定した場合
1点目は上図で記載しているが、開始位置を指定した場合の返す値だ。
指定した開始位置以前の文字は探索から無視されるが、FIND関数が返す値(上記の場合は-の位置)は開始位置からではなく、対象文字列の最初からの位置番号となる。
開始位置からの位置番号の取得ではないのでよく注意してほしい。
②メジャーでの集計
2点目はFIND関数を使用したフィールドをそのままビューに入れるとメジャーで集計(合計)される点だ。
同じオーダーidが複数行ある場合にFIND関数で取得した数値が合計されて、「関数がうまくいっていないのでは?」と混乱する場合があるので頭の片隅に入れておいてほしい(私がFIND関数で混乱したのがまさにこれだ(笑))
「FIND関数が正しく機能しているかな?」
と確認する時ぐらいしかこういう機会はないかもしれないが、原因は同じ行が複数あり、FIND関数で取得した値が合計されているだけなのでメジャーの集計方法を平均にして確認するようにすればよい。
まとめ
今回はFIND関数について解説した。
FIND関数は単独で使うことはあまりないが、LEFT関数等と組み合わせて使うことがよくあるのでぜひ覚えておいてほしい。
関連する文字列関数を覚えておくと応用の幅が広がると思うので下記記事も是非読んでみてもらえると嬉しい。