今回はBigQueryやAmazon Redshift等で使うことが出来るSTRPOS関数について紹介したいと思う。
Contents
STRPOS関数とは?
STRPOS関数は対象の文字列から指定した文字列の位置を整数で返してくれる文字列関数だ。
例えば、下記sample_addressテーブルのmail_addressカラムにおけるそれぞれの@の位置を知りたい場合があるとする。
上記データに対して、下記のようにSTRPOS関数を使用して@の位置を取得したクエリとその結果が下記となる。
1 2 3 4 5 6 | SELECT id ,mail_address ,STRPOS(mail_address,'@') AS strpos_sample FROM sample_address ; |
STRPOS関数により、メールアドレスの@の位置を整数で取得出来ていることがお分かりいただけると思う。
このようにSTRPOS関数は対象の文字列において指定した文字列(1文字でも2文字以上でもOK)が左から何番目に位置するかを教えてくれる。
ちなみに、STRPOSという名称が「わかりにくい、、、」と感じるかもしれないが、STRとPOSに分解すると意味が分かってくる。
- STR→STRING(文字列)
- POS→POSITION(位置)
という形でSTRINGとPOSITIONの略がくっついた名称になっている。
訳してしまえば、「文字列の位置に関係する関数」だということが理解しやすいはずだ。
STRPOS関数の使い方
STRPOS関数の使い方は下記だ。
先ほどのメールアドレスの中から@の位置を返す具体例の場合、下記のように指定すればOKだ。
STRPOS関数は上記のように使うことが出来る。
STRPOS関数が返してくれる値(戻り値)は整数型(BQではINT64)となる。
ちなみに指定する文字列は1文字だけでなく、下記のように2文字以上でも指定できる。
1 2 3 4 5 6 | SELECT id ,mail_address ,STRPOS(mail_address,'@sample') AS strpos_sample FROM sample_address ; |
上記のように2文字以上を指定した場合、指定した文字列が始まる文字の位置(@sampleの場合は@の位置)が返される点を覚えておきたい。
まとめ
今回は対象の文字列から指定した文字列の位置を整数で返してくれるSTRPOS関数を紹介した。
STRPOS関数はSUBSTR関数やSUBSTRING関数などの他の関数と組み合わせて使われることが多く、単体で使われることはあまりないかもしれない(私はあまり見たことがない)。
他の関数と組み合わせて使われるため、「STRPOS関数がどんなことをしているのか?」がわかりにくい場合が多数あると思う。
そういう場合は本記事のようにSTRPOS関数の部分だけを抜き出してみて、どのような処理をしているかを確認してみると理解しやすいと思う。