今回はSQLのSUBSTRING関数について解説していきたいと思う。
SUBSTRING関数とは?
SUBSTRING関数は指定した文字列カラムの各値(あるいは固定の文字列)の一部を切り取ってくれる関数だ。
例えば、下記のように顧客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関数の要点は下記だ。
- SUBSTRING関数は対象の文字列の指定した範囲を切り取る機能を持つ関数
- 開始位置の指定は省略できないが、切り取る文字数は省略が可能
- 省略した場合は、「開始位置から最後の文字までを切り取る」という意味になる
- 開始位置に0を指定した場合は「先頭の文字から切り取る」という意味になり、1番目を指定したのと同じとなる
- 開始位置にマイナスを指定した場合(-1など)は文字列の後ろから位置番号を数える
- 例えば、-2を指定した場合は「最後の文字の1文字前から切り取りを開始する」という意味になる
文字列の操作はSQLでよく使うので、この記事を参考に是非1つずつ使いこなせるようになって欲しい。