
今回BigQueryで文字列の一部を取り出すときに使えるSUBSTRING関数について解説していく。
SUBSTRING関数とは?
SUBSTRING関数とは、文字列の中から「指定した位置から」「指定した長さ」だけ文字を切り出すことができる関数である。
例えば、「abcdefg」という文字列から、「cde」だけを取り出す、といった使い方ができる。
データの中の一部分だけを使いたい時に非常に便利な関数だ。
下記のように顧客ID(customer_id)の先頭の2文字が顧客カテゴリー(customer_category)を表しているcutomerテーブルがあるとする。
上記customerテーブルに対してSUBSTRING関数を使って顧客ID(customer_id)から顧客カテゴリー(cutomer_category)を取得したクエリとその結果が下記となる。
1 2 3 4 5 6 | SELECT customer_id ,customer_name ,SUBSTRING(customer_id,0,2) AS customer_category FROM 'customer'; |
SUBSTRING関数を使用することで、顧客ID(customer_id)の先頭2文字だけを切り取った顧客カテゴリー(customer_category)というカラムを新たに作成できていることがお分かりいただけると思う。
もう1つ例を見ていこう。
SUBSTRING関数は先頭から指定した文字数を切り取るだけでなく、何文字目から切り取るかを指定することも出来る。
例えば、先ほどのcustomerテーブルで顧客ID(customer_id)の各値をSUBSTRING関数の指定の仕方を変えて取得してみたクエリとその結果が下記となる。
1 2 3 4 5 6 7 8 | SELECT customer_id ,customer_name ,SUBSTRING(customer_id,0,2) AS substring_1 ,SUBSTRING(customer_id,2,2) AS substring_2 ,SUBSTRING(customer_id,4) AS substring_3 FROM 'customer'; |
- substring_1はcustomer_idの先頭から2文字までが切り取られている
- substring_2はcustomer_idの2文字目から3文字目までが切り取られている
- substring_3はcustomer_idの4文字目から最後の文字までが切り取られている
このようにSUBSTRING関数は対象の文字列を指定した範囲で切り取ることが出来るので、文字列加工の際に重宝する。
SUBSTRING関数の使い方
SUBSTRING関数は下記を指定して使う。
- 対象の文字列
- 切り取り開始位置
- 切り取る文字数(省略可能)
切り取る文字数は省略が可能で、その場合は「指定した開始位置から最後の文字までを切り取る」という指定になる
具体例に当てはめて確認しよう。
1 2 3 4 5 6 | SELECT customer_id ,customer_name ,SUBSTRING(customer_id,0,2) AS substring_1 FROM 'customer'; |
上記クエリで使用されているSUBSTRING関数は下記の意味となる。
開始位置の指定で0を指定すると「先頭から開始する」という意味になり、1を指定した場合と同じ結果になる。
つまり、下記は同じ結果となる。
- SUBSTRING(customer_id,0,2)
- SUBSTRING(cusotmer_id,1,2)
「開始位置0は先頭から開始って意味なんだな」と頭に入れておいてもらえると良いと思う。
まとめ
SUBSTRING関数の要点は下記の通りだ。
- SUBSTRING関数は対象の文字列の指定した範囲を切り取る機能を持つ関数
- 開始位置の指定は省略できないが、切り取る文字数は省略が可能
- 省略した場合は、「開始位置から最後の文字までを切り取る」という意味になる
- 開始位置に0を指定した場合は「先頭の文字から切り取る」という意味になり、1番目を指定したのと同じとなる
- 開始位置にマイナスを指定した場合(-1など)は文字列の後ろから位置番号を数える
- 例えば、-2を指定した場合は「最後の文字の1文字前から切り取りを開始する」という意味になる
文字列の操作はBigQueryで非常によく使うので、この記事を参考に是非1つずつ使いこなせるようになって欲しい。