MySQL の SUBSTRING()
ここでは MySQL のよく使うビルトイン関数の SUBSTRING() についてご説明します。
MySQL の SUBSTRING() の使い方
MySQL の SUBSTRING() は、文字列の一部の文字列を返す組み込み関数です。
SUBSTRING() の構文は次の通りです。
SUBSTRING(文字列, 開始位置 [, 長さ])
「開始位置」は整数で指定し、一番最初の文字は 1 から始まり、2 が二番目の文字、3 が三番目の文字、、です。
「開始位置」をマイナスの値で指定すると、文字列の後ろからカウントされるようになり -1 が一番最後の文字、-2 が最後から二番目の文字、、のようになります。
「開始位置」に 0 を指定してもエラーにはなりませんが、空の文字列が返ります。
「長さ」も整数で指定し、開始位置から指定した文字数が返ります。
「長さ」はオプショナルで、指定しなければ、開始位置から残りの文字が全て返ります。
「長さ」に 0 やマイナスを指定してもエラーにはなりませんが、空っぽの文字列が返ります。
引数にカンマを使わずに SUBSTRING(文字列 FROM 開始位置 [FOR 長さ]) のように指定することもできます。
MID() と SUBSTR() は UBSTRING() のシノニムなので、全く同様の方法で使えます。
MySQL の SUBSTRING() を使って確認する
それでは実際に MySQL の SUBSTRING() を使ってその結果を見てみましょう。
わかりやすいように '123456789' という文字列の一部を SUBSTRING() を使って取得します。
SELECT SUBSTRING('123456789', 2),
SUBSTRING('123456789', 0),
SUBSTRING('123456789', 10),
SUBSTRING('123456789', -3);
[実行結果]
まずは、文字列と開始位置のみを引数に渡したケースです。
1 行目の SUBSTRING('123456789', 2) では、2 番目の文字から残り全ての '23456789' がかえっています。
2 行目と 3 行目は開始位置が存在しない値なので、空の文字列がかえっています。
4 行目の SUBSTRING('123456789', -3) では、マイナスの時は後ろから数えるので、後ろから 3 番目の 7 を開始位置にして、残り全ての '789' がかえっています。
次は、長さも指定して、SUBSTRING() を使ってみます。
SELECT SUBSTRING('123456789', 2, 5),
SUBSTRING('123456789', 2, 0),
SUBSTRING('123456789', 2, -1),
SUBSTRING('123456789', -4, 3);
[実行結果]
1 行目の SELECT SUBSTRING('123456789', 2, 5) では、2 番目の文字から 5 文字の '23456' がかえっています。
2 行目と 3 行目は長さに 0 やマイナスの値を指定すると空の文字列がかえるので、空白になっています。
4 行目の SUBSTRING('123456789', -4, 3) では、開始位置がマイナスの時は後ろから数えるので、後ろから 4 番目の 6 を開始位置にして、そこから 3 文字の '678' がかえっています。
以上、MySQL のよく使うビルトイン関数の SUBSTRING() についてご説明しました。